Sizzle仅返回一个元素,而选择器匹配两个元素

时间:2014-07-31 11:03:13

标签: javascript jquery-selectors sizzle

Sizzle不会返回与选择器匹配的所有元素。以下JSBin Demo显示了问题。

HTML

<h4> Playing with Sizzle JS </h4>

  <ul class="list">
    <li> Item 1 </li>
    <li class="row"> Item 2 </li>
    <li class="row"> <span>Item 3</span> </li> 
    <li class="divider">List item with unique class name </li>
  </ul>

  <ul class="list">
    <li> Item 1 </li>
    <li class="row"> Item 2 </li>
    <li class="row"> <span>Item 3</span> </li> 
    <li class="divider">List item with unique class name </li>
  </ul>

JS

var selector = 'UL.list > LI:eq(1)';
var elements = Sizzle(selector);

console.log(elements.length); //Says 1

我的问题是:

为什么它只返回1个元素,而有2个元素与选择器匹配? 如何让sizzle返回所有匹配的元素?

1 个答案:

答案 0 :(得分:1)

UL.list > LI:eq(1)只返回一个元素:匹配UL.list > LI的第二个元素,如:eq(1)所示。

如果您要查找所有li元素,请移除:eq()

如果您正在寻找第二个孩子的每个li,请使用:nth-child()

var elements = Sizzle('UL.list > LI:nth-child(2)');