【问题标题】:How to select the previous element of a given class [duplicate]如何选择给定类的前一个元素[重复]
【发布时间】:2012-09-06 15:26:42
【问题描述】:

我有一个 UL 清单:

<ul>
  <li data-sel='foo'></li>
  <li></li>
  <li data-sel='foo'></li>
  <li class='selected'></li>
  <li data-sel='foo'></li>
 </ul>

我可以使用:not 选择器访问li.selected 没有属性data-sel=foo 的第一个前一个元素

var element = $('.selected').prev("li:not([data-sel='foo'])");

但是我怎样才能访问具有data-sel=foo 属性的li.selected 的第一个前一个元素?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

这应该可以正常工作:

var element = $('.selected').prev("li[data-sel='foo']");

Demo

【讨论】:

  • 我认为.has 不起作用:“将匹配元素的集合减少为具有与选择器或 DOM 元素匹配的后代的元素。”api.jquery.com/has
【解决方案2】:

这行得通:

var element = $('.selected').prevAll("li[data-sel='foo']")[0];

jsFiddle example

【讨论】:

    【解决方案3】:

    您尝试过:has 选择器吗? http://api.jquery.com/has-selector/

    【讨论】:

      【解决方案4】:

      prev() 就是这样工作的,你可以像这样使用prevAll()

      jsFiddle

      $('.selected').prevAll('li').not('[data-sel="foo"]').first();
      

      $('.selected').prevAll('li:not([data-sel="foo"]):first');
      

      【讨论】:

        猜你喜欢
        • 2020-04-03
        • 2011-04-06
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 2016-04-20
        • 2011-07-04
        • 1970-01-01
        • 2018-02-21
        相关资源
        最近更新 更多