【发布时间】:2014-12-17 14:28:15
【问题描述】:
jQuery 选择 first row 为 even(基于 0),而 CSS 选择 second row 为 even(基于 1)。
是的,jQuery documentation 在附加说明中明确提到它是一个扩展,而不是 CSS 的一部分 -
因为 :even 是一个 jQuery 扩展,而不是 CSS 的一部分 规范,使用 :even 的查询不能利用 本机 DOM querySelectorAll() 提供的性能提升 方法。使用 :even 选择时达到最佳性能 元素,首先使用纯 CSS 选择器选择元素,然后 使用 .filter(":even")。
但是在决定什么是偶数和什么是奇数时,它们不应该是相同的吗?为什么会出现混乱?
$('ul li').filter(':even').text('jQuery Even')
li {
color: blue;
}
li:nth-child(even) {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<ul>
<li>CSS Odd</li>
<li>CSS Even</li>
<li>CSS Odd</li>
<li>CSS Even</li>
<li>CSS Even</li>
</ul>
【问题讨论】:
-
您已经确定了差异:从零开始计数和从一开始计数。要使它们匹配,只需使用 css 的
:nth-child(even)作为 jQuery 选择器。 -
@DavidThomas 感谢您的回复。您有任何参考资料说明了保持这种差异的原因。
标签: jquery css jquery-selectors css-selectors