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));
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));
jQueryインデックスが配列内の
-1
aを返すのはなぜですか?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()