【问题标题】:How to unbind a paticular binding in jQuery如何在 jQuery 中取消绑定特定的绑定
【发布时间】:2015-09-28 05:19:57
【问题描述】:

我有 2 个函数(abcdef),其中我已将 submit() 事件附加到一个元素,如下所示:

function abc(param_1, param_2) {
  jQuery('#element_id').one("submit", function(e){
    e.stopImmediatePropagation();
    someOtherFunction(param_1, param_2);
  });
}

function def() {
  jQuery('#element_id').one("submit", function(e){
    some other code
  });
}

问题:我需要每次都执行函数 def 内部的submit() 绑定,但根据某些情况,我可能需要取消绑定内部的submit() 绑定仅功能 abc。我怎样才能做到这一点?

注意:在将submit() 绑定到 abcdef 内的元素之前,我无法检查条件(if - else) ,因为条件是动态实现的。如果发生这种情况,我不希望函数 abc 内的 submit 块执行。

【问题讨论】:

  • .onebindevent 仅一次。所以你可以使用.on.offbindunbind
  • @GuruprasadRao 1> 我需要使用one() 2> 使用off() 将取消绑定整个submit 事件。
  • @Abhi: 所以,你想从函数“abc”中解绑提交事件,而不是从“def”中解绑?
  • @Abhi,jquery 允许您专门添加事件,例如“submit.abc”和“submit.def”,因此,您可以使用 .off("submit.abc") .它允许对事件进行这种命名空间。
  • @Abhi:签出这个简单的 plunkr:plnkr.co/edit/QIQX5m?p=preview

标签: jquery


【解决方案1】:

Jquery 允许添加带有命名空间的事件,因此,我们可以添加 events.namespace,并相应地处理绑定和关闭单个事件。

更多信息请参考:https://api.jquery.com/event.namespace/

因此,同一个提交可以重写为"submit.abc""submit.def",然后是.off("submit.abc")

【讨论】:

    猜你喜欢
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多