如何使用jQuery独立于文档结构获取最近或前一个对象?

时间:2012-10-31 04:04:47

标签: javascript jquery ajax json xhtml

示例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**

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

3 个答案:

答案 0 :(得分:4)

这样的事情:

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

试验:

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

答案 1 :(得分:0)

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

另外,请查看.find() API,这可能有助于遍历DOM对象。

答案 2 :(得分:0)

试试这个

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

demo