答案 0 :(得分:7)
答案 1 :(得分:0)
:has()
selector仅选择那些具有与给定选择器匹配的降序元素的元素。在内部,:has
is defined as(Sizzle是jQuery默认选择器库):
function(elem, i, match){
return !!Sizzle( match[3], elem ).length;
}
这几乎相当于为每个选定元素测试jQuery("selector", elem).length
或jQuery(elem).find("selector").length
,以过滤那些没有此类后代的元素。
与此相反,has
method可以采用选择器或DOM元素,只返回那些不包含任何给定元素的元素。因为在内部,has
method is defined为:
function( target ) {
var targets = jQuery( target );
return this.filter(function() {
for ( var i = 0, l = targets.length; i < l; i++ ) {
if ( jQuery.contains( this, targets[i] ) ) {
return true;
}
}
});
}
因此它使用contains
method来检查是否包含给定元素以过滤所选元素。请注意,只包含一个给定元素就足够了。