1

jQueryインデックスが配列の0に対して-1を返すのはなぜですか?

var myArray = [0,4,8];
document.write('<br/>8 is at index : ' + $(myArray).index(8));
document.write('<br/>4 is at index : ' + $(myArray).index(4));
document.write('<br/>0 is at index : ' + $(myArray).index(0));

http://jsfiddle.net/JohnNeed/WGPMa/1/

4

1 に答える 1

3

jQueryインデックスが配列内の-1aを返すのはなぜですか?0

間違った使い方をしているからです。jQuery オブジェクト コンストラクターでラップしています。jQuery は、そのインデックス付きスロットにTruthyであるオブジェクト (DOM 要素への参照) が含まれていることを期待しています。したがって、 を渡すと0、それはfalsyになり、最初の条件が失敗します (真の引数のみが期待されます。jQueryは、渡された引数を処理しないように設計されています)。

// No argument, return index in parent
if ( !elem ) {
    return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
}

ソース

0(虚偽) から (真実) に5変更すると、期待どおりに動作します。

配列内の何かのインデックスを見つけたい場合はindexOf()、プレーン配列で使用します。jQueryを使用する必要がある場合は、使用してください(これには、存在しない$.inArray()場所で機能するという利点があります)。Array.prototype.indexOf()

于 2013-01-07T03:13:32.727 に答える