0

重複の可能性:
関数を1回だけ実行する

私はこのコードを持っていて、DIVインサイドフレームを一度だけ移動させたいのですが、時間間隔を置いてクリックすると機能します。

一度に何度もクリックすると、1回だけでなく無限に移動します:/

$(document).ready(function(){
    $(".arrow").click(function(){
        pos = $("#insideframe").css('margin-left');
        pos = (pos.substr(0, 3));
        var posi = parseInt(pos);
        if(posi < -23 ){
            die();
        }else if(posi > -20 ){
            $("#insideframe").animate({
                marginLeft: '-=230'
                }, 800 );
        }
    });
});

どうすれば一度だけトリガーできますか?

4

2 に答える 2

1

あなたはすることができます$(".arrow").one('click', function(){...}。これにより、アクションは1回だけ発生しますが、再度クリックを許可する場合は、クリックを再バインドする必要があります。

このプラグインもチェックしてください。

于 2012-10-11T16:31:36.737 に答える
1

クリックイベントが発生したときにデータをdivに追加し、それ以降のクリックでデータを確認できます。

そのようです:

$(document).ready(function(){
    $(".arrow").click(function(){

        //Check here if clicked already and return if so
        if($(this).data('clicked') == 'yes')return;
        $(this).data('clicked', 'yes');

        pos = $("#insideframe").css('margin-left');
        pos = (pos.substr(0, 3));
        var posi = parseInt(pos);
        if(posi < -23 ){
            die();
        }else if(posi > -20 ){
            $("#insideframe").animate({
                marginLeft: '-=230'
                }, 800 );
        }
    });
});
于 2012-10-11T16:27:33.460 に答える