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 に答える