我有以下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) - 来触发循环功能。
非常感谢任何帮助!
答案 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);
});