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

时间:2014-01-04 23:00:05

标签: jquery

这是我的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();

})

我希望在每个h2之前立即获得.more 我已经尝试了所有prev方法和closest,但没有一种方法可以使用

2 个答案:

答案 0 :(得分:0)

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/

答案 1 :(得分:0)

你可以这样做:

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