【问题标题】:how to find an element based on two selectors?如何根据两个选择器找到一个元素?
【发布时间】:2012-05-12 14:03:08
【问题描述】:

我有一棵这样的厄运树:

ul #navigation
    li .active
    ul
        li.active_li
        li
        li
    /ul
    li
    ul
        li.active_li
        li
        li
    /ul
/ul

我想在属于 liul 中找到类为 active_lili,该类为 active。 :)

我们可以看到有 2 个li 的类为active_li。我只想要第一个

类似:$('#navigation').find('li.active').find('li.active)li').doSomething();

这个选择器似乎不起作用

有什么想法吗?

【问题讨论】:

  • jQuery 具有与 CSS 相同的后代/祖先选择器概念 .. 这将起作用: $('#navigation li.active_li');会不会是父级与下划线?
  • @tandu:我认为可以肯定地说任何 CSS 选择器都可以用作 jQuery 选择器。
  • @Blender 不是 .. jQuery 没有 CSS 的一些伪类选择器的概念,不支持媒体查询等(不是那些有意义的),也不支持CSS 4 选择器(不完整且未使用)。 CSS 肯定与 jQuery 选择器不兼容——不是你说的那样。
  • @tandu:jQuery 的选择器引擎会很高兴地解析 大多数 CSS 选择器。有一些例外(主要是晦涩的伪类,但逻辑上不属于 jQuery 代码):ejohn.org/blog/selectors-that-people-actually-use
  • @Blender 该链接似乎与我们所谈论的内容无关.. jQuery 没有实现 :hover:visited:active——我不会称这些为晦涩难懂的,我不会说它们在逻辑上不属于 jQuery 代码——如果它们不属于,为什么要实现 :focus 作为选择器?

标签: javascript jquery find contains belongs-to


【解决方案1】:

你可以使用

$('#navigation li.active li.active_li').each(function(){

});

并在运行第一个函数后将该函数标记为关闭。

或者,如果您只想选择第一个:

 $('#navigation li.active li.active_li').first();

【讨论】:

    【解决方案2】:

    试试这个选择器:

    $('#navigation li.active ul li.active_li')
                             ^^
                              \_ You can get rid of this, as <li> elements
                                 exist only within <ul> elements.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2021-10-13
      • 2022-10-14
      相关资源
      最近更新 更多