Iva*_*sky 6 javascript arrays jquery slideshow
访问数组时,何时使用.eq()函数是否合适?
例如,我有......
slides.eq(slidesLength-1).css("z-index", (slidesLength-1));
Run Code Online (Sandbox Code Playgroud)
后来我......
for(i=0; i<slidesLength-1; i++) {
$(slides[i]).css("left", "-100%");
}
Run Code Online (Sandbox Code Playgroud)
在第一段代码中,如果我不使用.eq()函数,幻灯片放映将停止运行.但是,无论我是否使用.eq()函数,第二部分似乎都起作用.为什么是这样?
slides是不是一个数组.这是一个jQuery对象.该.eq()方法将指定索引处的元素作为jQuery对象返回.
虽然jQuery对象可能不是数组,但它们可以假装具有length属性以及与索引对应的属性.(因为他们不是数组,你不能说类似方法.pop(),.forEach()等他们.)
当你这样做时slides[i],你实际上是获取DOM元素,而不是jQuery对象.该$()函数将DOM元素转换为jQuery对象.
所以,当你这样做时slides.eq(1),内部jQuery正在做$(slides[i]).
假装是数组的PS对象,如jQuery对象,被称为"类数组对象".如果你console.log(slides),它可能看起来像一个数组.这只是您的控制台,试图让您方便.(有关更多信息,请参阅此问题:在JavaScript中创建类似数组的对象)
.eq()是一个返回jQuery对象的jQuery方法,而通过index访问则返回plain DOM元素.eq()当你想css()在返回的选择上使用jQuery方法(在本例中)时,你应该使用它.
原因之所以$(slides[i])有效是因为您通过将plain元素传递给$()构造函数来构造jQuery对象.