【问题标题】:Opposite of .find().find() 的对面
【发布时间】:2010-04-26 22:21:14
【问题描述】:

有没有.find()的反义词?

在哪里$('.myclass').except('#myid');

将抓取所有带有 .myclass 的元素,但带有 #myid 的元素除外。 我知道我可以在此示例中使用 $('.myclass[id=myid]'),但似乎在其他情况下会有所帮助。

谢谢

编辑:

感谢您的回复!看起来我只是错过了在文档中看到 .not():not()

【问题讨论】:

  • 我认为如果他们将.lose() 别名为.not() 会很棒。

标签: javascript jquery jquery-selectors


【解决方案1】:
$('.myclass').not('#myid');

http://api.jquery.com/not/

【讨论】:

    【解决方案2】:

    试试.not()——它会删除任何匹配选择器的元素。

    【讨论】:

    • 谢谢!我一定错过了 jQuery 文档中的内容。 =/
    【解决方案3】:

    $('.myclass').not('#myid')

    【讨论】:

      【解决方案4】:

      如果你想要一个单一的字符串选择器,那么使用这个:

      $('.myClass:not(#myid)')
      

      这使用:not() pseudo-class selector 而不是.not() 过滤器函数。

      这似乎违反直觉,但这种单一的选择器方法有时可能会更慢,因为通过类(没有过滤)获取元素是经过优化的,在这种情况下,它会在选择器通过时过滤每个元素。

      替代方案,使用.not() 可以更快,这取决于匹配.myclass 的元素数量,因为通过ID 查找元素是一个非常 快速操作,因此将其从集合中排除相当快。

      【讨论】:

        【解决方案5】:

        通用

        $('selector:not(selector)').doStuff()
        

        具体

        $('.myclass:not(#myid)').doStuff() 
        

        我相信是正确的解决方案。

        访问http://api.jquery.com/not-selector/

        更多用例和示例。

        【讨论】:

          【解决方案6】:

          我想你在找not()

          【讨论】:

            【解决方案7】:

            是的,有。您可以使用 jQuery 的 :not 选择器或 .not() 函数。示例代码:

            $('.something').not('.else')
            $('.something:not(.not-me):not(.neither-me)')
            

            附带说明一下,CSS3 有 native :not pseudo-class

            【讨论】:

              【解决方案8】:

              你们都错了。 Not 与 Find 并不完全相反,因为 Not 不仅搜索当前元素而不搜索后代,而 Find() 将搜索后代以查看某个条件是否匹配。 Find 的反义词是 .Not(:has(...))。

              【讨论】:

              • 原标题似乎有误导性。你将不得不原谅我当时的经验不足。但是,如果您阅读其余文本,我会更具体地寻找与 .filter() 相对的功能。
              猜你喜欢
              • 2012-09-16
              • 2012-02-16
              • 1970-01-01
              • 1970-01-01
              • 2018-03-25
              • 2020-03-14
              • 1970-01-01
              • 2022-10-31
              • 2014-06-05
              相关资源
              最近更新 更多