选择 $(this) 之前的第一个 H2,它与 $(this) 不在同一级别



这是我的HTML的简化版本

<ul>
    <li><h2>1/1/2014</h2></li>
    <li>
       <ul>
         <li> <div class="something">  <span class="more"> +3 </span> </div> </li>
       </ul>
    </li>
    <li>
        <ul>
            <li><h2>2/3/2014</h2></li>
            <ul>
                 <li> <span class="more"> +9 </span> </li>
            </ul>
        </ul>
    </li>
</ul>

这是我的JQ代码

$('.more').each(function(){
   var more = $(this).text();
   var date = $(this).prev('h2').text();
})

我想在每次.more之前立即获得h2我已经尝试了所有prev方法和closest但没有一个有效

你可以做这样的事情:

$('.more').each(function(index, elem){
  $(elem).parents('ul').first().parent().prev().find('h2')
  // Then do whatever you want with the h2...
})

h2 不是"prev"或"before"元素,因为它嵌套在 LI 中。

您需要使用

 $('.more').each(function(){
   var more = $(this).text();
   var date = $(this).parents('li').prev('li').children('h2').text();
  alert(date);
});

您需要检查"日期"是否为空。

这是一个JSFIDDLE http://jsfiddle.net/jLZww/1/

相关内容

最新更新