jQuery之间的区别:eq()和:nth-​​child()

tes*_*dtv 32 javascript jquery dom jquery-selectors

在jQuery中,使用eq()和:nth-​​child()来选择任何元素之间的一些主要区别是什么?

同样一般来说,对于起始索引,在这种情况下它是从"0"开始还是从"1"开始?

Ahs*_*hod 55

:EQ()

选择匹配集中索引n处的元素.

与索引相关的选择器(:eq(),:lt(),:gt(),: even,:odd)过滤与其前面的表达式匹配的元素集.它们根据此匹配集中元素的顺序缩小设置.例如,如果首先使用类选择器(.myclass)选择元素并返回四个元素,则为了这些选择器的目的,这些元素被赋予索引0到3.

:第n个孩子()

选择所有父元素的第n个子元素.

因为jQuery的实现:nth-​​child(n)严格来自CSS规范,n的值是"1-indexed",这意味着计数从1开始.然而,对于所有其他选择器表达式,jQuery遵循JavaScript的" 0索引"计数.因此,给定一个包含两个<li>s,$('li:nth-child(1)')选择第一个<li>$('li:eq(1)')选择第二个.

:nth-​​child(n)伪类很容易与:eq(n)混淆,即使这两者可能导致显着不同的匹配元素.使用:nth-​​child(n),所有子节点都被计数,无论它们是什么,只有在与附加到伪类的选择器匹配时才选择指定的元素.使用:eq(n)仅计算附加到伪类的选择器,不限于任何其他元素的子节点,并且选择第(n + 1)个(n为0).

:nth-​​child(an + b)伪类表示法表示在文档树中具有+ b-1兄弟的元素,对于n的任何正整数或零值,并且具有父元素.对于大于零的a和b的值,这有效地将元素的子元素划分为元素组(最后一组取剩余元素),并选择每个组的第b个元素.例如,这允许选择器寻址表中的每隔一行,并且可以用于以四个周期交替段落文本的颜色.a和b值必须是整数(正数,负数或零).元素的第一个子元素的索引是1.

除此之外,:nth-​​child()可以将'odd'和'even'作为参数.'odd'与2n + 1具有相同的含义,'even'与2n具有相同的含义.

有关这种不寻常用法的进一步讨论可以在W3C CSS规范中找到.

详细的比较

参见演示:http://jsfiddle.net/rathoreahsan/sXHtB/ - 链接已更新

另请参阅参考资料

http://api.jquery.com/eq-selector/

http://api.jquery.com/nth-child-selector/

  • 回答更新,添加了新的演示 (2认同)

def*_*fuz 13

:nth-child()选择器:选择所有父元素的元素.

:eq()选择器:选择匹配集中索引n处的元素.

请参阅:http://api.jquery.com/eq-selector/http://api.jquery.com/nth-child-selector/

祝好运.


Mik*_*ker 7

:eq() 允许您通过索引访问jQuery对象中的元素

http://api.jquery.com/eq-selector/

:nth-child 还允许您通过索引访问元素,但它仅适用于其左侧的术语.

http://api.jquery.com/nth-child-selector/

这意味着如果要从选择器中选择一个元素,则使用:eq如果要将选择限制为具有n-1个先行sibilings的元素,则使用nth-child.

Javascript数组通常从0开始索引; 但是nth-child从1索引,因为它在技术上是一个CSS属性而不是jQuery.