5

我有一个插件

$.fn.mycoolplugin

它绑定mousemove到文档,例如

$(document).("mousemove", function() {
    //bunch of stuff
});

在选择器上调用函数之后

$('.myclass').mycoolplugin();

我将如何解除绑定,因为我的代码使用和mousemove绑定到文档和其他内容?mouseentermouseleave

4

2 回答 2

0

您可以通过调用取消绑定任何处理程序.unbind

$(document).unbind("mousemove");

mousemove将从document. 请注意,这样做可能会破坏插件的功能(有破坏将mousemove处理程序添加到的任何其他代码/插件的风险document)。

于 2011-08-17T17:38:00.360 回答
0

您将更改插件绑定的方式,然后释放它的附加处理程序,如下所示:

  1. 您创建一个负责绑定所有初始事件的函数(例如鼠标移动器等)
  2. 您创建了一个负责解除绑定所有初始事件的函数。
  3. 绑定到事件时,不要使用匿名函数。相反,为事件定义一个特定的处理程序。这样,当您附加时,您会这样做:

    $(document).bind('mousemove', myFuncDelegate);

然后,当您需要将其从范围中删除时,您可以解除绑定:

 $(document).unbind('mousemove', myFuncDelegate);

这样,您只能取消附加您的事件。有关详细信息,请参阅http://api.jquery.com/unbind/

只需在加载时调用绑定方法,当您决定卸载它时,调用 unbind 方法。

于 2011-08-17T17:39:11.817 回答