2013-09-30 3 views
0

У меня есть объект, который создает какое-то событие, прикрепленное к документу. Они являются общим событием, как MouseMove, MouseDown и т.д.jQuery unbind события, объявленные в области

Тогда я хочу, чтобы $(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 
} 

Или есть другой способ управления группами событий?

ответ

3

Вы можете использовать namespaced event обработчики

Ex

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

затем

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

Демо: Fiddle

+0

это будет wokr как нормальное событие щелчка через click.something? – pie6k

+0

@ Kluska000 да ... он работает как обычный случай hanlder –

+0

Thats awesome, So bad, я этого не знал раньше! Благодаря! – pie6k

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); 
Смежные вопросы