jquery数组[index]返回undefined

时间:2014-08-24 18:54:09

标签: javascript jquery arrays function undefined

尝试使用索引在<li>数组上调用.fadeOut()会返回dom元素,而不是jQuery对象。我曾经偶然发现过这个问题,但似乎无法记住为什么会发生这种情况,任何帮助都会受到赞赏。

$(document).ready(function(){
    var currentSlide = 0,
        slides       = $('#homeSlider ul li'),
        slideLength  = slides.length;

    var slideInterval = setInterval(function(){

        if(currentSlide >= slideLength-1) {
            currentSlide = 0;
        } else {
            currentSlide++; 
        }

        slides[currentSlide].fadeOut(); /* <-- undefined is not a function */

    }, 2000); // end slide setInterval


});// end doc ready

1 个答案:

答案 0 :(得分:0)

您正在尝试在DOM节点上使用jQuery方法(jQuery对象的函数)。可以预见,这不会,不能工作。要在这种情况下使用jQuery方法,您可以重新包装DOM节点:

$(slides[currentSlide]).fadeOut();

或者使用eq()来有效地将jQuery对象修剪为仅提供索引处的那个(仍然包裹的)节点:

slides.eq(currentSlide).fadeOut();

使用slides[currentSlide]返回DOM节点的原因是因为jQuery伪装成数组,因此提供数字索引会返回存储在该索引处的元素。