1

選択した要素のグループ内で要素の順序を取得する必要があります。次に例を示します。

<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<ul>
    <li>1</li>
    <li id="example">2</li>
    <li>3</li>
</ul>
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>
<script>
    $('#example').click(function (e)) {
        $this = $(this);
        // some code
    });
</script>

すべての li 要素内の $this の順序を知る必要があります。たとえば、この場合、コードは 5 を返す必要があります。

私が最初に考えたのは、すべての li 要素をトラバースして各要素を比較することですが、このアプローチは遅いと思います。各 li 要素に data-order 属性を追加することもできますが、これを行うためのより簡単または高速な方法はありますか?

4

4 に答える 4

4

これを試して

 $('#example').click(function (e) {
  var $this = $(this);
  var $index = $('li').index($this);
   alert($index + 1) //+1 because index start from 0
 });

ここでフィドル

注:これ<li>により、ドキュメント内のすべてが選択されます..具体的には、クラス/ IDを指定してul、クラス/ IDセレクターを使用できます$('.ulClass li').index($this);

于 2013-04-19T13:12:50.810 に答える
1

ただし、カウントは 0 から始まるため、これは 4 を返します。

 $('#example').on('click',function(e){
         $this = $(this);
        console.log($("li").index(this))
    });

http://jsfiddle.net/szGtd/

于 2013-04-19T13:13:03.487 に答える
0

タグがすべてコンテナ内にラップされている場合ulは、次のことができます。

var index = $('#container li').index($('#example')) + 1;

フィドルhttp://jsfiddle.net/DScxd/

于 2013-04-19T13:09:52.083 に答える
0

試す

$("#example").click(function () {
  var index = $('li').index(this);
  console.log(index + 1)
});

http://jsfiddle.net/pAuMG/を参照してください

于 2013-04-19T13:21:49.950 に答える