0

複数の jQuery オブジェクトで構成されているオブジェクトがある場合、次のようになります。

var $listItems $('ul.list1 li').add($('ul.list2 li'));

配列内の任意の要素のインデックスを取得するにはどうすればよいですか。つまり、次のとおりです。

$listItems.click(function() {
    console.log($(this).index());
});

2番目のリストの項目がクリックされたとき、明らかにインデックスはjqueryオブジェクトではなく、DOMに相対的なインデックスであるため、これは私にとってはうまくいきません。

どうすればインデックスを取得できますか?

http://jsfiddle.net/ZdCsu/

4

2 に答える 2

1

スタック内の要素はインデックスに関して論理的な関係を持たない可能性があるため、jQuery では相対インデックス付けは常に少し面倒です。

次のようなことができます。

$('#list_one li').add('#list_two li').each(function(index) {
    //assign a contrived index to each element in turn, relative to the stack
    $(this).data('stack-index', index);
}).on('click', function() {
    //then retrieve it on click
    alert($(this).data('stack-index'));
});

また、あなたが投稿した特定の例では、 は必要ありませんがadd()、おそらく実際のコードにはあります。

于 2012-08-23T11:18:18.717 に答える
1

あなたができることは、jQuery オブジェクトを配列に変換することです。

var $listItems = $('ul.list1 li').add($('ul.list2 li'));

$listItems.click(function() {

    console.log($listItems.toArray().indexOf(this));

});​

更新されたjsfiddle

于 2012-08-23T11:26:55.337 に答える