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

あなたが最初の範囲を知っていると仮定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 に答える
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 に答える