从子X到子X选择子元素

时间:2013-10-12 23:37:54

标签: jquery css-selectors

我需要在div中为子x添加一个类到子x。

所以在这个例子中我想把这个类添加到子3,4,5,6,7,8,9,10。

现在它只是将类添加到每个第三个元素。

有什么好的建议可以实现这个目标吗?

我有这个HTML:

  <div id="days">
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
      <div></div>
  </div>

Jquery的:

 day = 3;
 child_count = 10;
 $('#days > div:nth-child(' + day + 'n+' + child_count + ')').addClass('done');

3 个答案:

答案 0 :(得分:3)

您最好的选择实际上非常简单:

$('#days > div').slice(start, end).addClass('done');

startend是基于零的索引)

DEMO
Docs

答案 1 :(得分:1)

可以执行此操作:http://jsfiddle.net/ZpZhk/或此http://jsfiddle.net/NzGVW/

请注意,这不是动态的,只能满足您的特定情况。

API .netUntil http://api.jquery.com/nextUntil/

API:.nextAll http://api.jquery.com/nextAll/

希望它符合您的特定需求,上面的其他内容很好:)

<强>码

 $('#days > div:nth-child(3)').nextAll().addClass('done');

 alert($('#days').html());

<强>更新

 $('#days > div:nth-child(3)').nextUntil($('#days > div:nth-child(10)') , "div" ).addClass('done');

答案 2 :(得分:1)

另一种方法,使用:gt:lt

$("#days > div:gt(" + (day-2) + ")").filter(':lt(' + (child_count) + ')').addClass('done');

<强> Fiddle

lt和gt的所有索引都是0。 gt将选择大于您的开始计数的项目,因此gt将为day-2,即选择大于索引1的全部(即第二项,即第3项),并过滤它以使项目少于您的计数。< / p>