有没有更短的方式来写这个?
$myelements.find('*').andSelf().filter(myselector)
据我所知,如果不这样做,就无法搜索所有后代,包括它自己?
如果没有这个功能,我会写一个,但如果它已经存在,我不想重新发明轮子。
这是(修订):
(function($,undefined) {
$.fn.all = function(selector) {
if(selector===undefined) return this.find('*').andSelf();
return this.find(selector).add(this.filter(selector));
}
})(jQuery);
答案 0 :(得分:2)
没有办法在API中执行此操作,但我认为如果使用选择器执行常规.find()
,您可能会获得更好的效果结果,然后仅将.filter()
应用于元素本身。
var all = $myelements.find(myselector).add( $myelements.filter(myselector) );
这样,如果您使用的是有效的选择器,则可以使用querySelectorAll
。
否则,您完全使用JavaScript代码而不是本机代码(在支持的浏览器中)进行过滤。
当然你也可以把它变成一个插件。
答案 1 :(得分:0)
不是更好:
$($myelements + ', ' + $myelements + ' > *').filter(myselector);