当与子选择器一起使用时>
,jQuery 的“has”的两个变体表现不同。
拿这个 HTML:
<div>
<span>Text</span>
</div>
现在:
$("div:has(>span)");
会返回它,而:
$("div").has(">span");
不会。它是错误还是功能?在这里比较:http: //jsfiddle.net/aC9dP/
编辑:这可能是一个错误或至少是未记录的不一致行为。
无论如何,我认为让子选择器始终作为一元运算符工作是有益的。它使您能够做一些原本需要自定义过滤器功能的事情——它允许您直接选择具有某些子元素的元素:
$("ul:has(>li.active)").show(); // works
$("ul").has(">li.active)").show(); // doesn't work, but IMHO it should
相对于:
$("ul").filter(function () {
return $(this).children("li.active").length > 0;
}).show();
我为此打开了一张 jQuery 票证 (7205)。