3

我在页面中有元素:

<a class="element" onclick="do this"></a>
<a class="element" onclick="do this"></a>
<a class="element" onclick="do this"></a>
<a class="element" onclick="do this"></a>

我需要触发每个点击并在触发的点击之间延迟一些时间。

//for each one .element
$('.element').delay(800).trigger('click');

然后我需要将这个循环重复为无限循环,但我需要stop it when user click on a .element

我尝试了很多东西,比如 $.each(loop trigger); 但我不明白如何循环到无限并在我悲伤时停止它:(

4

2 回答 2

0

可能存在更优雅的解决方案,但这是我的两分钱:

​$(function(){
    $("a").on("click", function(e, d){
        $(this).addClass("active").siblings().removeClass("active");
        if(d !== true) {
            clearInterval(timer);
        }
    });

    $("a:first").addClass("active");
    var timer = setInterval(doClick, 800);

    function doClick() {
        var $n = $(".active").next();
        if ($n.length == 0) {
            $n = $(".active").siblings().first();
        }
        console.log($n.length);
        $n.trigger("click", [true]);
    }
});
​

jsFiddle

于 2012-10-15T16:54:50.253 回答
0

我的解决方案:

$(function(){
    var links = $('.element');

    var timer = setInterval(function(){
        links.each(function(index, value){
            var link = $(this);
            setTimeout(function(){
                link.trigger('click', "trigger");
            }, 100 + index * 50);
        });
    }, 800);

    links.click(function(e, isTrigger){
        e.preventDefault();
        if(!isTrigger)
        {
            clearInterval(timer);
        }
    });
});

演示:http: //jsfiddle.net/c2G6q/1/

于 2012-10-15T16:57:28.250 回答