【问题标题】:how to unbind and bind again如何解绑并再次绑定
【发布时间】:2011-04-29 13:16:12
【问题描述】:
$("#archive").click(function(event){
        /*do something*/
});

$('#archive2').unbind('click',event);

我有这个我解除绑定的点击功能。但是,当我单击某个按钮时,我想再次绑定它。

$("#archive").bind("click",event);

我正在使用此代码再次绑定,但它似乎不起作用。有什么建议或解决方法吗?

【问题讨论】:

  • 最好用编程语言或技术名称标记问题,并且只有在添加一些特定的标记之后

标签: events bind jquery


【解决方案1】:

您必须保留对函数的引用(而不是传递匿名函数):

function handler() {
    // do something
}

$("#archive").click(handler); // bind the first time
$("#archive").unbind('click', handler); // unbind
$("#archive").click(handler); // bind again

不确定在您的情况下event 是什么,但如果是传递给事件处理程序的event 对象,那么将其传递给unbindbind 是没有意义的。

【讨论】:

    【解决方案2】:

    jQuery 1.7 开始,您应该使用onoff 进行所有事件处理程序绑定:

    var handler = function() {
      alert('The quick brown fox jumps over the lazy dog.');
    };
    $('#foo').on('click', handler);
    $('#foo').off('click', handler);
    

    【讨论】:

      【解决方案3】:

      为什么在事件处理程序中没有布尔值和if 语句?

      【讨论】:

        【解决方案4】:

        您需要为该函数提供一个处理程序,以便您可以绑定/取消绑定它。 (还允许您在同一事件中绑定/取消绑定特定事件处理程序:

        var handler = function() {
          alert('The quick brown fox jumps over the lazy dog.');
        };
        $('#foo').bind('click', handler);
        $('#foo').unbind('click', handler);
        

        (用于http://api.jquery.com/unbind/

        【讨论】:

        • @tep:不客气!看起来你是新来的——欢迎加入社区;记得标记答案并投票给任何有用的帖子。
        【解决方案5】:

        试试这个:

        var closeHandle = function () {
              alert('close');        
        };
        
        function addClick() {       
                 $("#btnTest").unbind('click').click(closeHandle);          
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多