У вас есть параметры в обратном направлении.Сначала должен быть найден элемент, за которым следует массив.
Вот код (из 1.5.0):
inArray: function( elem, array ) {
if ( array.indexOf ) {
return array.indexOf( elem );
}
for ( var i = 0, length = array.length; i < length; i++ ) {
if ( array[ i ] === elem ) {
return i;
}
}
return -1;
},
Теперь интересный вопрос: почему строка ".indexOf() "возвращает 0 в IE7, когда вы передаете пустой массив в качестве цели.Кто-то может знать, но я очень стараюсь не беспокоиться о том, почему сломанные части IE7 такие, какие они есть.
edit - интересное обновление: оказывается, что хотя приведенный выше кодопределенно есть в исходном коде jQuery, позже он будет переопределен.Вышеупомянутое определение находится в строке 691 в источнике 1.4.4, но позже, в строке 855, мы видим:
if ( indexOf ) {
jQuery.inArray = function( elem, array ) {
return indexOf.call( array, elem );
};
}
Там, голая переменная "indexOf" является скрытой ссылкой на "Массив.prototype.indexOf».Когда это вызывается с ".call ()", со строкой в качестве первого параметра и пустым массивом в качестве второго, вы получаете -1 назад.