3

私は興味深い状況を手にしています。私は遅くまで働いているので、脳のおならが原因かもしれませんが、私には最も奇妙なことが起こっています.index()

ここにjsfiddleがあります

問題は、選択ボックスの変更イベント ハンドラーがトリガーされると、現在の選択ボックスのインデックスを見つけようとすることです。ページ上の要素が選択ボックスのみの場合、返されるインデックスは正しいです。ただし、他の要素がある場合、それらが選択ボックスでなくても、要素.index()だけでなく、ページ上の要素の合計に基づいてインデックスを返すように見えます$('select')

ここに私のイベントハンドラがあります:

$('select').change(function() {
        alert(
            '$(\'select\').length: ' + $('select').length + "\n" +
            '$(\'select\').last().index(): ' + $('select').last().index() + "\n" +
            '$(this).index(): ' + $(this).index());
    });

これが何らかの理由で正しい動作である場合、誰かがその理由を説明できますか?

前もって感謝します。

4

2 に答える 2

0

このindex関数は、直接の親に対する要素のゼロベースの位置を返します。デフォルトでは、タグ名は重要ではありません。タグ.index("select")のみを考慮する場合に使用します。select

于 2012-12-09T04:42:05.343 に答える
0

インデックスでセレクターを指定する必要があります。

http://jsfiddle.net/Q5Lmy/1/

$(document).ready(function() {
    $('select').change(function() {
        alert(
            '$(\'select\').length: ' + $('select').length + "\n" +
            '$(\'select\').last().index(): ' + $('select').last().index('select') + "\n" +
            '$(this).index(): ' + $(this).index('select'));
    });

});

http://api.jquery.com/index/ </p>

于 2012-12-09T04:47:20.970 に答える