Не мога да отбягна събитието.
Опитвах се да се свържа click
събитие, след това свържете mouseleave
събитие и обратно повикване 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 за отговор № 1На първо място, 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");