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 期望它的索引槽包含真实的对象(对 DOM 元素的引用)。因此,当您传入 时0,它是falsy,并且第一个条件失败(只需要真实的参数;jQuery 旨在处理不传递的参数)。

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

来源

如果您从0(falsy) 更改为5(truthy),它会按预期工作

如果要在数组中查找某些内容的索引,indexOf()请在普通数组上使用。如果您必须使用 jQuery,请使用$.inArray()(这确实具有在Array.prototype.indexOf()不存在的地方工作的优势)。

于 2013-01-07T03:13:32.727 回答