相关疑难解决方法(0)

jQuery:.has()和:has()之间的细微差别

当与子选择器一起使用时>,jQuery的"has"的两个变体表现不同.

拿这个HTML:

<div>
  <span>Text</span>
</div>
Run Code Online (Sandbox Code Playgroud)

现在:

$("div:has(>span)");
Run Code Online (Sandbox Code Playgroud)

将它返回,同时:

$("div").has(">span");
Run Code Online (Sandbox Code Playgroud)

不会.这是一个错误还是一个功能?比较这里:http://jsfiddle.net/aC9dP/


编辑:这可能是一个错误或至少没有记录的不一致行为.

无论如何,我认为让子选择器始终作为一元运算符工作是有益的.它使您能够执行其他需要自定义过滤功能的操作 - 它允许您直接选择具有特定子项的元素:

$("ul:has(>li.active)").show();     // works
$("ul").has(">li.active)").show();  // doesn't work, but IMHO it should
Run Code Online (Sandbox Code Playgroud)

而不是:

$("ul").filter(function () {
  return $(this).children("li.active").length > 0;
}).show();
Run Code Online (Sandbox Code Playgroud)

我为此打开了一个jQuery票证(7205).

jquery sizzle

10
推荐指数
1
解决办法
2854
查看次数

标签 统计

jquery ×1

sizzle ×1