取消绑定自定义事件侦听器上的特定处理程序

时间:2012-05-15 02:36:45

标签: jquery

我正在使用JQuery .live来监听自定义事件,即不是.click,.change,.keyup或任何本机事件,而是我使用jquery .trigger创建的事件。我在应用程序中有几个地方使用.live来监听此事件。我想从事件中删除一个处理程序。我尝试过的方法似乎都没有,包括.unbind,.die和.undelegate。我正在使用jquery 1.6,所以我不能使用.off。实现这一目标的最佳方法是什么?

这基本上是我的代码所采用的形式。如果处理程序已经存在,我首先调用unbind来删除处理程序。

OBJECT 1
{
    myNameSpace.MY_CUSTOM_EVENT_STRING = "my_event";

    $cachedFieldObject.trigger(myNameSpace.MY_CUSTOM_EVENT_STRING);
}

OBJECT 2
{
    function myfunctionName(var1) {myObject.myObjectsFunction()}

    $("#divID").find(".fieldClass").unbind(myNameSpace.MY_CUSTOM_EVENT_STRING, myfunctionName).live(myNameSpace.MY_CUSTOM_EVENT_STRING, myfunctionName);
}

1 个答案:

答案 0 :(得分:0)

live()将委托的事件处理程序附加到document元素,因此您必须从文档元素中取消它们,fiddle显示如何从实时但不是特定的选定元素中取消绑定特定函数。 /> 编辑:
来自doc

  • 不支持链接方法。例如,$(“a”)。find(“。offsite,.external”)。live(...);无效且无法按预期工作。

    可以取消绑定自定义事件,但您必须为所有绑定元素执行此操作 在此fiddle中,自定义事件仅在所有元素未绑定时才会解除绑定。