jQuery中的nth()伪类选择器是什么?

前端之家收集整理的这篇文章主要介绍了jQuery中的nth()伪类选择器是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
第n个伪类的定义是什么?

我找不到任何jQuery或CSS文档,但似乎存在:

var $list = $('<ul><li>1</li><li>2</li><li>3</li></ul>');

$list.find('li:nth(2)').text();

返回:“3”,

而:

$list.find('li:nth-of-type(2)').text();
 $list.find('li:nth-child(2)').text();

都返回“2”

这个伪类是什么?有人可以点我一些文件吗?

解决方法

什么是:nth()选择器?

与其他答案相反:nth()不是CSS伪类选择器.

这是Sizzle engine中使用的一个鲜为人知的位置选择器:

:nth: Finds the nth element on the page.

你会发现上面的定义here in the Github documentation for Sizzle.

为什么选择不同的元素:nth-​​child()/:nth-​​of-type()?

nth()和您的其他选择器选择不同元素的原因是因为nth()是一个基于零的索引选择器,而CSS选择器是基于1的索引选择器.

这是可以理解的,这可能会令人困惑,因为大多数人会假设nth()将保持与类似命名的CSS伪类选择器(例如nth-child()和nth-type-type)的某种一致性 – 然而,如上所述,他们实际上并不是相关的.

所以,nth()的功能实际上更接近:eq()呢?

是.其实呢似乎就像nth() is exactly the same as eq()

Expr.pseudos["nth"] = Expr.pseudos["eq"];

This old mailing list conversation(2007)意味着John Resig计划删除:nth()选择器,原因如下:

“I’ve searched the groups but I can’t seem to find any related talk on
this. What,if any,is the difference between using :eq(n) and
:nth(n)? I’d like to know before I start standardizing on one or the
other. Thanks.” – Matt Penner

“They’re the same,so you can use whichever you prefer. From jquery.js: nth: "m[3]-0==i", eq: "m[3]-0==i"– Karl Swedberg

“Huh… I should probably nuke :nth().” – John Resig

但是,正如您所注意到的那样,删除:nth()选择器从未实现(至2013年).

使用示例

HTML:

<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>

jQuery的:

$('p:nth(2)').text(); // Returns 3 as zero-based index.
$('p:eq(2)').text(); // Returns 3 as zero-based index.
$('p:nth-child(2)').text(); // Returns 2 as one-based index.
$('p:nth-of-type(2)').text(); // Returns 2 as one-based index.

jsFiddle version here.

原文链接:/jquery/180310.html

猜你在找的jQuery相关文章