0

スタックを検索しても問題を解決できませんでした。以下に live() 関数があります。関数の実行中にボタンがもう一度クリックされるのを止めてから、再バインドする方法がわかります。ボタンはアンバインドされますが、再びバインドされません... :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');
    }

});
4

3 に答える 3

3

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

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;
    }
});
于 2011-11-30T22:02:25.150 に答える
1

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

$('.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

jquery1.7以降

于 2011-11-30T22:01:51.487 に答える
1

.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);
    }

});
于 2011-11-30T22:02:42.993 に答える