【问题标题】:Set Timeout function and each function clash设置超时功能和每个功能冲突
【发布时间】:2012-01-06 22:13:32
【问题描述】:

以下代码应触发搜索结果中的每个元素的鼠标 enter() 和 mouseleave(),每个元素之间的间隔为 2000 毫秒。超时没有效果,直接结束了。

$(window).load(function(){
    var delayslide = 0;
    $(".featuredslider a").each(function(){
        var current = $(this).index();
        window.setTimeout(function(){
            $(".featuredslider a").mouseleave();
            $('.featuredslider a:eq(' + current + ')').mouseenter();
            delayslide += 2000;
        }, delayslide);
    });

});

【问题讨论】:

    标签: jquery settimeout each


    【解决方案1】:

    给你:

    var elems = $( 'a', '.featuredslider' ).get(),
        i = -1;
    
    (function loop() {
        $( elems[i] ).mouseleave();
        i += 1;
        $( elems[i] ).mouseenter();
    
        if ( i < elems.length ) { setTimeout( loop, 2000 ); }
    })();
    

    现场演示: http://jsfiddle.net/G9VNj/

    【讨论】:

    • 你不应该真正命名匿名函数,此外,还有更好的方法......让我把它写出来......
    • @ivans Oho,Zagrepčanin。 :)
    • 这是一个草率的组织代码。我发现有更好的方法来做到这一点。
    • @Shawn31313 什么是马虎?请告诉我如何改进它。
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 2022-10-05
    • 2011-06-20
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2019-01-27
    相关资源
    最近更新 更多