访问数组时,什么时候适合使用.eq()函数?
例如,我有...
slides.eq(slidesLength-1).css("z-index", (slidesLength-1));
后来我...
for(i=0; i<slidesLength-1; i++) {
$(slides[i]).css("left", "-100%");
}
在第一段代码中,如果我不使用 .eq() 函数,幻灯片将停止运行。然而,无论我是否使用 .eq() 函数,第二部分似乎都能起作用。为什么是这样?
slides
is not数组。它是一个 jQuery 对象。这.eq() http://api.jquery.com/eq/方法返回指定索引处的元素作为jQuery 对象.
虽然 jQuery 对象可能不是数组,但它们可以pretend是通过拥有length
属性以及与索引对应的属性。 (因为它们不是数组,所以你不能调用类似的方法.pop()
, .forEach()
等。)
当你这样做时slides[i]
,你实际上得到了DOM元素,不是 jQuery 对象。这$()
函数将 DOM 元素转换为 jQuery 对象。
所以,当你这样做时slides.eq(1)
, jQuery 内部正在做$(slides[i])
.
附:像 jQuery 对象一样,伪装成数组的对象被称为“类数组对象”。如果你console.log(slides)
,它可能看起来像一个数组。这只是您的控制台试图为您提供方便。 (有关更多信息,请参阅此问题:在 JavaScript 中创建类似数组的对象 https://stackoverflow.com/q/11886578/206403)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)