【问题标题】:Rebind a live() click event after using die()?使用 die() 后重新绑定 live() 点击事件?
【发布时间】:2011-11-30 21:57:18
【问题描述】:

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

});

【问题讨论】:

  • 如果您使用的是 jQuery 1.7+,那么您应该使用 on() 代替 live()delegate()
  • 感谢您指出这一点:)

标签: jquery bind live unbind die


【解决方案1】:

无需解绑和重新绑定只需使用一个标志:

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

【讨论】:

  • 谢谢,这很奏效!我知道我哪里出错了——真是个愚蠢的错误:)
【解决方案2】:

您没有将任何函数传递给 .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);
    }

});

【讨论】:

    【解决方案3】:

    您的最后一行代码没有将任何内容绑定到点击处理程序。你必须绑定一个函数

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多