【发布时间】:2017-03-04 09:28:09
【问题描述】:
我有这样的结构:
<div class="parent">
<div class="randomclass">...</div>
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="randomclassdifferentname">...</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
<div class="item">Item 6</div>
<div class="item">Item 7</div>
...
</div>
<div class="parent">
<div class="anotherclass">...</div>
<div class="item">Another item 1</div>
<div class="item">Another item 2</div>
<div>...</div>
<div class="item">Another item 3</div>
...
</div>
我只需要选择 .parent div 的第 n 个 .item div 类子节点(每个父节点的计数器都会重置)。
例如,我想选择每个 第三个“div.item” 元素,因此我希望影响内容为“Item 3”、“”的元素第 6 项”、“另一项 3”。
规则:
- 所需的类始终应用于“div”元素(可能并不重要)。
- 父母总是有“父”类,也总是“div”元素。
- 在 div 中可以有其他 div(或任何其他类型的元素)具有随机类名(或没有),这些不得干扰第 n 个计数器。
- 元素也可以嵌套,因此每个项目类元素还可以包含另一个父类元素,以及另一个项目类元素。
不幸的是 CSS 选择器:
div.parent div.item:nth-child(3n)
与 nth-child() 无法正常工作。虽然效果仅适用于具有给定类的元素,但计数本身是不正确的,因为它也计算没有给定类的元素。
由于我怀疑是否会有纯 CSS 解决方案,而且因为我实际上将其用作 jQuery 选择器,所以我想要一些简单的 jQuery 替代方案。谢谢你们能给我的任何帮助。
【问题讨论】:
-
我认为您需要使用
$("div.parent").each()分别处理每个父项,然后使用$(this).children(".item")获取所有项目,然后将它们循环 3。 -
我认为你不能仅在 css 中做到这一点需要一些 javscript 支持
-
@PHPglue:正如您在这个小提琴link 中看到的那样,不幸的是它不起作用。还是我错过了什么?
-
nth-child()是 parentNode 的第 n 个子节点。
标签: javascript jquery html css css-selectors