【问题标题】:How to target only first children with find?如何仅针对第一个孩子进行查找?
【发布时间】:2013-06-27 07:49:51
【问题描述】:

如何只选择第一个喜欢的孩子:

$('ul.menu > li').addClass('first_li');

但是使用 find() 方法?

【问题讨论】:

    标签: jquery


    【解决方案1】:

    使用此代码...

    $('ul.menu').find('li').eq(0).addClass('first_li');
    

    【讨论】:

      【解决方案2】:

      你应该使用children(),它相当于你的选择器$('ul.menu > li')

      $('ul.menu').children('li').addClass('first_li');
      

      【讨论】:

      • 其实只是 $('ul.menu').children('li').addClass('first_li');作品! first-child 只选择一个 li 标签。 +1
      • 我的意思是我在问题中所说的第一个孩子,而不仅仅是第一个孩子。所以如果有更多的后代,我不想针对他们。我想要的是用我之前评论中的代码完成的。
      • 好的,我重新阅读了您的问题并意识到我完全误解了它,对不起,我的错!但是,你不应该使用 .find() 而是 children() 在这里会更准确,顺便说一下更快
      【解决方案3】:

      正如我在问题中所说,我指的是第一个孩子,而不仅仅是第一个孩子。所以如果有更多的后代,我不想针对他们。

      来自原始选择器的一种简单方法是:

      $('ul.menu').find('> li').addClass('first_li');
      

      See demo targeting direct children here.

      或其他人建议的.children('li')

      【讨论】:

        【解决方案4】:

        :first 的其他答案是正确的,但您还需要知道,另一种方法比 :first 选择器快 4 倍(主要是因为您要避免另一个选择器查询)。

        $($('ul.menu').find('li')[0]).addClass('first_li');
        

        参考:https://stackoverflow.com/a/4837885/1253312

        【讨论】:

          【解决方案5】:

          另外,如果您只是出于样式原因这样做,请考虑使用 CSS 选择器:

          ul.menu li { border-top: 1px solid black; }
          ul.menu li:first-child { border-top: none; }
          

          【讨论】:

            猜你喜欢
            • 2017-11-10
            • 2022-06-28
            • 2016-12-28
            • 2017-03-11
            • 2012-06-10
            • 1970-01-01
            • 2011-08-16
            • 2011-02-20
            • 2011-04-07
            相关资源
            最近更新 更多