我认为您的方法在执行时间方面是有效的,但您可能要求的是语法糖。为此,您可以将其包装到插件中:
jQuery.fn.findAndSelf = function(selector) {
return this.find(selector).add(this.filter(selector))
}
然后像这样使用它:
$('.whatever').findAndSelf('.awesome')
如果你想变得花哨,你可以创建一个插件,它不仅适用于“查找”,还适用于“父母”和“孩子”以及其他基于选择器的插件:
jQuery.fn.withSelf = function(plugin, selector) {
return this[plugin](selector).add(this.filter(selector))
}
然后您将提供您要调用的遍历插件作为第一个参数:
$('.whatever').withSelf('find', '.awesome')
$('.whatever').withSelf('parents', '.awesome')
Just for kicks,另一个有趣的插件,可让您一次调用任意数量的遍历插件:
jQuery.fn.traverse = function(plugins, selector) {
var set = new jQuery();
$.each(plugins, function(i, val) {
set.add(this[val](selector));
}
return set
}
您可以使用基于选择器的插件的任意组合来调用它,如下所示:
$('.whatever').traverse(['find','filter'], '.awesome')
$('.whatever').traverse(['parents','find'], '.awesome')
$('.whatever').traverse(['parents', 'filter'], '.awesome')