【问题标题】:jQuery :odd and :nth-child CSS3 differentjQuery :odd 和 :nth-child CSS3 不同
【发布时间】:2012-04-20 03:44:09
【问题描述】:

我发现 jQuery :odd 选择器和 CSS3 nth-child(odd) 的工作方式不同。 http://jsfiddle.net/TMDwT/5/

黄色是 CSS nth-child(odd) 如果你取消注释 JS 和注释 background: yellow in CSS 你会发现它以另一种方式找到。

谁能说说我是如何通过 CSS3 实现与 jQuery 相同的结果的?

谢谢!

【问题讨论】:

  • 您的嵌套列表格式不正确。 li 元素必须是 menuolul 元素的子元素。
  • 对不起,已修复。但问题依然存在。 jsfiddle.net/TMDwT/5
  • 在 jQuery 中使用 nth-child(odd) 怎么样?
  • @Hexxagonal: jQuery 的:nth-child() 是CSS3 的副本,所以不会有任何区别。
  • @BoltClock 这就是我的意思......他想知道如何在 jQuery 和 CSS 中实现相同的结果

标签: jquery css jquery-selectors css-selectors


【解决方案1】:

是的,:odd:nth-child(odd) 不是一回事:

  • :odd 匹配匹配元素中的奇数项,即您应用选择器的 jQuery 对象的内容,

  • :nth-child(odd) 匹配其各自父项中的奇数项

这与:first:first-child:last:last-child 之间的区别相同。

更新: 正如 zzzzBov 和 BoltClock 正确指出的那样,:odd 选择器是从零开始的,而 :nth-child() 选择器是从一开始的。这意味着即使您将两个选择器应用于元素的完整子列表(从而消除了:odd:nth-child(odd) 之间的差异),它们仍然不会匹配相同的元素。

【讨论】:

  • 以及“我可以在 CSS3 中做到这一点吗?”的答案。是没有。
  • 别忘了提到:odd 使用从0 开始的索引,而:nth-child 使用从1 开始的索引。这意味着在单个列表中,它们仍然不会代表相同的选择。
  • @zzzzBov,绝对是,但发问者明确指的是:nth-child(odd),因此在这种特殊情况下,基于一个并不是真正的问题:)
  • @Alex,CSS 选择器没有当前匹配的元素的概念,所以:odd 那里没有等价物。
  • @Frédéric Hamidi:实际上,这很重要。它们索引的差异正是奇数和偶数关键字表现不同的原因。
猜你喜欢
  • 2018-12-04
  • 2017-02-09
  • 1970-01-01
  • 2016-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
相关资源
最近更新 更多