【问题标题】:first selector doesn't filter first, but first-child does第一个选择器不会首先过滤,但第一个子项会
【发布时间】:2013-01-08 23:15:43
【问题描述】:

我第一次使用了很多次,但这次它不起作用并且控制台中没有错误。 我有这个html:

<ul>
<li class="iheader"><h1>TITLE</h1></li>
//some more list items
<li class="iheader"></li> 
</ul>

现在运行这段代码:

$('.iheader:first').removeClass('iheader');

删除这两个类。我也试过了:

$('.iheader').filter(':first').removeClass('iheader');

同样的结果。

但是,如果我使用first:child,当 html 如上所述时,它确实可以工作。

谁知道为什么?这可能与我包含 jQuery mobile 的事实有关吗?

【问题讨论】:

  • 在小提琴中工作:jsfiddle.net/RoryMcCrossan/29HKU。问题一定出在代码的其他地方。
  • 出于某种原因,@acme 解决方案对我有用,你碰巧知道为什么吗?

标签: jquery html jquery-mobile jquery-selectors


【解决方案1】:

试试

$('.iheader:first-child').removeClass('iheader');

【讨论】:

  • @eric.itzhak:你确定你没有多次调用代码吗?这是我能想到的唯一解释......(以及你使用的是什么版本的 jQuery?)
  • 您的代码也应该可以工作(因为其他人已经搞砸了) - 我想问题出在其他地方。但只要它有效,就使用它;-)
  • @Matt ya 我在 ready 事件中调用它一次,我使用 1.8.3。和 acme ya 我会使用它,但我真的很想知道为什么,因为这没有意义。是什么让你推荐它?
  • 我应该提到我还包括 jQuery mobile
【解决方案2】:

jQuery first:

$('.iheader').first().removeClass('iheader');

【讨论】:

  • 不,这做同样的事情。
  • 我知道,但建议尝试另一种方法
  • 哦,我的意思是我试过了,但没有用 :) 感谢您的帮助!
【解决方案3】:

对于那些想知道为什么 acmes 解决方案有效的人, 这是因为 jQuery 可以选择使用 CSS 选择器,而 :first-child 是一个 css 选择器,它为作为其父元素的第一个子元素的元素指定 css。

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 2019-03-13
    • 2014-08-16
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 2014-11-11
    • 2023-03-16
    • 2015-06-10
    相关资源
    最近更新 更多