Javascript jQuery查找具有特定类的前一个li

Javascript jQuery查找具有特定类的前一个li,javascript,jquery,Javascript,Jquery,我得到了以下html: <ul class="dropdown-menu inner"> <li class="dropdown-header" data-optgroup="1"><a></a>Header1</li>//this is needed <li><a></a></li> <li><a></a></li>//I am

我得到了以下html:

<ul class="dropdown-menu inner">
  <li class="dropdown-header" data-optgroup="1"><a></a>Header1</li>//this is needed
  <li><a></a></li>
  <li><a></a></li>//I am here
  <li class="dropdown-header" data-optgroup="2"><a></a>Header2</li>
  <li><a></a></li>
  <li><a></a></li>
</ul>

但是它说它找不到我的
下拉标题
,所以它是
未定义的
。任何想法都欢迎。

您可以结合使用
:not('dropdown-header')
parent()
,和
.prevAll()
,来完成您需要的操作

$(“li:not('.dropdown header')a”)。单击(function(){
console.log($(this.parent().prevAll('li.dropdown header')).data('optgroup'))
})

  • 1校长1
  • 2.
  • 3.
  • 4领导2
  • 5.
  • 6.

您可以结合使用
:not('dropdown-header')
parent()
”和
.prevAll()
来完成您需要的操作

$(“li:not('.dropdown header')a”)。单击(function(){
console.log($(this.parent().prevAll('li.dropdown header')).data('optgroup'))
})

  • 1校长1
  • 2.
  • 3.
  • 4领导2
  • 5.
  • 6.

如果他们只想要第一个匹配,那么在
.prevAll()
之后加一个
.first()
就可以了。如果我只想要最后一个匹配?Preval正在选择上面的所有匹配项,而我需要的是最接近单击的
li
的匹配项。在上面的示例中,单击5或6会为您提供两个optgroup值,而单击2或3会为您提供一个optgroup值。你期望什么?如果他们只想要第一个匹配,那么在
.prevAll()
之后的
.first()
就可以了。如果我只想要最后一个匹配?Preval正在选择上面的所有匹配项,而我需要的是最接近单击的
li
的匹配项。在上面的示例中,单击5或6会为您提供两个optgroup值,而单击2或3会为您提供一个optgroup值。你在期待什么?
$(document).on('click', 'li a', function (e) {
    var html = $($this[0].parentNode).prev('.dropdown-header');//closest()?
    console.log($($this[0].parentNode).html());
});