2

示例 1:

<ul>
   <li id="o1" class="elem">foo1</li>
   <li id="o2" class="elem">foo2</li>
   <li id="o3" class="elem">foo3</li>
</ul>

**$('#o2').exactly_previous('.elem') ----> returns #o1**

示例 2:

<ul>
   <li id="o1" class="elem">foo1
      <ul>
         <li id="o11" class="elem"></li>
      </ul>
   </li>
   <li id="o2" class="elem">foo2</li>
   <li id="o3" class="elem">foo3</li>
</ul>

**$('#o2').exactly_previous('.elem') ----> returns #o11
$('#o11').exactly_previous('.elem') ----> returns #o1**

示例 3:

<ul>
   <li id="o1" class="elem">fooX</li>
</ul>
<ul>
   <li id="o2" class="elem">fooX</li>
</ul>

**$('#o2').exactly_previous('.elem') ----> returns #o1**

示例 4:

<a id="o1" class="elem">fooX</a>
<ul>
   <li id="o2" class="elem">fooX</li>
</ul>

**$('#o2').exactly_previous('.elem') ----> returns #o1**

我希望你能理解我的问题!谢谢。

4

3 回答 3

4

像这样的东西:

function exactly_previous($this, selector)
{
    var $all = $(selector);
    return $all.eq($all.index($this)-1);
}

测试:

将其转换为 jQuery 插件留给读者作为练习。

于 2012-10-31T04:11:03.563 回答
0

为什么不看看 jQuery .closest() API。可能有你需要的东西。

此外,还可以查看.find() API,它可能有助于遍历 DOM 对象。

于 2012-10-31T04:14:47.290 回答
0

尝试这个

  $('#o2').parent().find('li').slice($('#o2').index() -1,$('#o2').index())

演示

于 2012-10-31T04:18:09.020 回答