0

我无法解决通过 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');
    }

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

在 jquery 1.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 回答