需要Javascript重复/循环帮助

时间:2012-08-09 16:43:59

标签: javascript jquery

我有以下javascript

$('.goto1').click(function() { 
    $('#mttslider').cycle(0); 
    return false; 
}); 

我希望它能像这样重复:

$('.goto1').click(function() { 
    $('#mttslider').cycle(0); 
    return false; 
}); 

$('.goto2').click(function() { 
    $('#mttslider').cycle(1); 
    return false; 
}); 

$('.goto3').click(function() { 
        $('#mttslider').cycle(2); 
        return false; 
    }); 

etc...

这样我就可以获得每个触发器 - .goto(n) - 来触发循环功能。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

$('[class^=goto]').click(function() { 
    var index = parseInt( this.className.replace('goto',''), 10 );
    $('#mttslider').cycle(index); 
    return false; 
}); 

如果您的元素除class之外没有goto1, goto2等,那么这将有效。

答案 1 :(得分:0)

var listener = function(index){
 var selector = '.goto'+ index;
 $(selector).click(function() { 
    $('#mttslider').cycle(index-1); 
    return false; 
 }); 
}

现在你可以从i到n调用 listener 函数来注册新的事件监听器并使用变量索引值调用 cycle 函数

e.g:

listener(3);
listener(5);

答案 2 :(得分:0)

假设你知道n的范围 我可能会这样做:

var slider = $('#mtslider');

for(var i=1; i<=n; i++)
{
    (function(j){ 
        $('.goto' + j).on('click', function(){
            slider.cycle(j)
        });
    })(i);
}

因为$('#mtslider')引用了一个Id,我假设它没有改变,所以你不必多次运行jquery选择器。除此之外,只需遍历范围int中的每个[1,n]并使用闭包来创建单击处理程序。如果您不使用闭包,则单击该项后i的值很可能会有所不同。

如果n未知,您可以使用单个选择器,类似于上一个答案,但没有让goto(n)成为第一个类的警告。

$('class~="goto"]').on('click', function(){ 
    var i = /goto(\d+)/.exec(this.className)[1];
    slider.cycle(i);
});