2016-12-10 5 views
0

Я не могу отключить использование события.jquery off not working

Я пытался связать click событие, затем связать mouseleave событие и обратный вызов unbind click, но не работает.
el является дом создавать и добавлять с помощью сценария, поэтому я использую document.on... el

поэтому я попытался ниже включаю комментировал код тест не работает слишком .... я скучаю понимаю?

JQuery-1.11.1.min.js

https://jsfiddle.net/70t6jtns/

var el = $('div') 
$(document).on('click', el, function() { 
    console.log('oncli') 
}); 
//$(document).on('mouseleave', el, function() { 
    //$(document).off('click', el, function() { 
    //console.log('offcli') 
    //}); 
    //$(document).off('click', el); 
    el.off('click'); 
//}); 

ответ

4

Во-первых, on не принимает объекты JQuery в качестве второго аргумента, так $(document).on('click', el, function() {... не имеет смысла.

Основная проблема заключается в том, что вы используете делегирование событий в одном случае, но ожидаете, что в другом случае обработчик с прямым подключением. Вы прикрепляете свой обработчик click к document, но затем пытаетесь сделать отсоединить от определенного элемента (el). Вы должны удалить его из того же самого, к которому вы его привязали.

Если вы хотите присоединить обработчик el и отсоединить его позже, используйте el последовательно в качестве цели:

el.on("click", function() { ... 

затем

el.off("click"); 

Если обработчик должен быть делегирован, вы» Еще раз хочу убедиться, что вы удаляете то же самое, что добавляете. Так, например,

$(document).on("click", "selector-for-the-element", function() { ... 

затем

$(document).off("click", "selector-for-the-element"); 
+0

спасибо за ответ но эль, это создать и добавить скриптом – user1775888

+0

@ user1775888: Это нормально, просто подключить событие после того, как он создан. Ваш код показывает, что у вас есть элемент, когда вы подключаете обработчик. –

+0

немного запутаться, поэтому использование синтаксиса on может быть '$ (document) .on (" click "," selector-for-the-element ", ...' right ?, но '' selector-for-the-element 'должен быть селектором вроде .n #n не может быть объектом jquery – user1775888