mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 21:13:36 +00:00
zjquery: Add closest() method.
This commit is contained in:
committed by
Tim Abbott
parent
b13add3eaf
commit
be527905ca
@@ -210,3 +210,31 @@ run_test('extensions', () => {
|
||||
// But we also have area available from general extension.
|
||||
assert.equal(rect.area(), 35);
|
||||
});
|
||||
|
||||
run_test('closest', () => {
|
||||
var widget = $('#my-widget');
|
||||
var parent;
|
||||
var parentSelector;
|
||||
|
||||
parentSelector = '#my-parent';
|
||||
parent = $(parentSelector);
|
||||
widget.set_parent(parent);
|
||||
assert.equal(widget.closest('#my-parent').selector, parentSelector);
|
||||
|
||||
parentSelector = '<div id="my-parent"></div>';
|
||||
parent = $(parentSelector);
|
||||
widget.set_parent(parent);
|
||||
assert.equal(widget.closest('#my-parent').selector, parentSelector);
|
||||
|
||||
parentSelector = '<div class="parent-class"></div>';
|
||||
parent = $(parentSelector);
|
||||
widget.set_parent(parent);
|
||||
assert.equal(widget.closest('.parent-class').selector, parentSelector);
|
||||
|
||||
parentSelector = '#my-parent';
|
||||
parent = $(parentSelector);
|
||||
widget.set_parents_result(parentSelector, parent);
|
||||
assert.equal(widget.closest('#my-parent').selector, parentSelector);
|
||||
|
||||
assert.equal(widget.closest('#bogus-parent').selector, undefined);
|
||||
});
|
||||
|
||||
@@ -163,6 +163,18 @@ exports.make_new_elem = function (selector, opts) {
|
||||
event_store.generic_event('click', arg);
|
||||
return self;
|
||||
},
|
||||
closest: function (selector) {
|
||||
var elem = self;
|
||||
var search = selector.startsWith('.') || selector.startsWith('#') ? selector.substring(1) : selector;
|
||||
if (elem.selector.indexOf(search) > -1) {
|
||||
return elem;
|
||||
} else if (parents_result.get(selector)) {
|
||||
return parents_result.get(selector);
|
||||
} else if (!elem.parent()) {
|
||||
return [];
|
||||
}
|
||||
return elem.parent().closest(selector);
|
||||
},
|
||||
data: noop,
|
||||
delay: function () {
|
||||
return self;
|
||||
|
||||
Reference in New Issue
Block a user