在范围内声明的jQuery unbind事件

时间:2013-09-30 15:59:15

标签: javascript jquery events

我有一些对象创建一些附加到文档的事件。它们是常见的事件,如mousemove,mousedown等。

然后我想制作$(document).unbind('mousemove')并且它可以,但它可能会使插件的最终用户创建的某些事件崩溃,或者使用某些外部代码导致冲突

是否可以删除在某个范围内声明的所有事件

像:

$.fn.somePlugin = function() {
    //here begins our scope

    //declaring a lot of events

    //some stuff

    //remove events of this scope leaving other of same type untouched
}

还是有其他方法来管理事件组吗?

2 个答案:

答案 0 :(得分:3)

您可以使用namespaced event处理程序

实施例

$(el).on('click.myplugin', function(){...})//or any eventname.pluginname

然后

$(el).off('click.myplugin')

演示:Fiddle

答案 1 :(得分:0)

将对函数的引用传递给off方法。

来自http://api.jquery.com/off/

var foo = function() {
  // Code to handle some kind of event
};

// ... Now foo will be called when paragraphs are clicked ...
$( "body" ).on( "click", "p", foo );

// ... Foo will no longer be called.
$( "body" ).off( "click", "p", foo );