jQuery触发器点击循环元素

时间:2012-10-15 16:39:31

标签: jquery loops triggers click cycle

我在页面中有元素:

<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');

然后我需要重复这个周期作为infite周期,但我需要stop it when user click on a .element

我尝试过很多东西,比如$ .each(循环触发器);但我无法理解如何将所有人循环到无限,并在我伤心时停止它:(

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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/