die()を使用した後、ライブ()クリックイベントを再生しますか?

StackOverflow https://stackoverflow.com/questions/8333511

質問

私はスタックを通して私の問題を解決することができませんでした。以下にライブ()機能を持っています。機能が実行されているときに、ボタンを2回クリックするのを停止する方法を確認できます。ボタンはバインドされていませんが、二度とバインドしません...:s

$('.control-left, .prevActive').live('click',function(){

    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active'){   
        $('.control-left, .prevActive').die('click');   
        moveSlider('left');
        $('.control-left, .prevActive').live('click');
    }

});
役に立ちましたか?

解決

フラグを使用するだけで、バインドしてリビングする必要はありません。

var running = false;
$('.control-left, .prevActive').live('click',function(){
    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active' && !running){ 
        running = true;
        moveSlider('left');
        running = false;
    }
});

他のヒント

あなたは.liveに関数を渡していません..これを試してください:

$('.control-left, .prevActive').live('click',function hello(){

    var firstSlide = $('.slider li:first-child');

    if(firstSlide.attr('class') != 'active'){   
        $('.control-left, .prevActive').die('click');   
        moveSlider('left');
        $('.control-left, .prevActive').live('click', hello);
    }

});

コードの最後の行は、クリックハンドラーに何もバインドしません。関数にバインドする必要があります

$('.control-left, .prevActive').live('click', function () { code here });

あなたの状況では、おそらくこのようなことをしたいと思うでしょう

var myspecialclickfunction = function(){

  var firstSlide = $('.slider li:first-child');

  if(firstSlide.attr('class') != 'active'){   
      $('.control-left, .prevActive').die('click');   
      moveSlider('left');
      $('.control-left, .prevActive').live('click', myspecialclickfunction);
};

$(document).ready(function () {
  $('.control-left, .prevActive').live('click',myspecialclickfunction);
});

また、使用する必要があるjquery 1.42〜1.6x

jquery 1.7+で

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top