2

我有以下 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) - 来触发循环功能。

任何帮助将非常感激!

4

3 回答 3

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

如果您的元素没有class例外goto1, goto2等,这将起作用。

于 2012-08-09T16:47:48.543 回答
0
var listener = function(index){
 var selector = '.goto'+ index;
 $(selector).click(function() { 
    $('#mttslider').cycle(index-1); 
    return false; 
 }); 
}

现在您可以调用从 i 到 n的侦听器函数来注册新的事件侦听器并调用具有可变索引值的循环函数

例如:

listener(3);
listener(5);
于 2012-08-09T17:04:34.023 回答
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);
});
于 2012-08-09T17:41:13.853 回答