使用die()后重新绑定live()单击事件?

时间:2011-11-30 21:57:19

标签: jquery bind live unbind die

我无法通过Stack搜索我的问题。我的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');
    }

});

3 个答案:

答案 0 :(得分: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;
    }
});

答案 1 :(得分:1)

您的最后一行代码不会将任何内容绑定到Click处理程序。您必须绑定一个函数

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

答案 2 :(得分: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);
    }

});