Как отменить привязку события, привязанного к «on(function)»? ⇐ Jquery
-
Anonymous
Как отменить привязку события, привязанного к «on(function)»?
Изменить: лучший способ, который я нашел сейчас, - это использовать $(this).off(event), который в некоторых случаях может отменить привязку вашей .on(функции) сразу после ее использования
например:
$(body).on("click",function(event){ //если пользователь щелкнет за пределами #yourdiv, удалите его и отсоедините .on(function) if( ! $("#yourdiv").is(event.target)){ $("#yourdiv").remove() //используем off(), чтобы отменить привязку этого события $(это).off(событие) } }) Я хочу привязать событие клика к $("*"), чтобы отслеживать, нажимает ли пользователь за пределами блока, а затем отменить привязку этого события клика.
Я уже пробовал:
$("*").on("click", function(event) { if (!$("#block").is(event.target)) { //сделай что-нибудь $("*").off("клик") } }) Но это работает плохо, потому что я сделал много такого типа on(function) для $("*"), что создает много прерываний и вся система взрывается.
Мне нужно знать, как отменить привязку "this" функции, связанной с on(функцией), но не делать ничего с другими функциями (даже если они все привязаны к одной цели).
Или как я могу прослушать щелчок, который происходит за пределами блока (все, что я пробовал, скопировано из ответов 2012 года, может быть, есть какой-нибудь более разумный способ?)
Спасибо за любую помощь!
издание:
Я попробовал это, сделанное Марком Байдженсом
$("#container").one("click",":not(.exclude, .exclude *)",(event)=>{ событие.stopPropagation(); //сделай что-нибудь }) но моя структура такая:
И мой новый вопрос: мне нужно прослушать щелчок в контейнере, и когда он не раскрывается в
Изменить: лучший способ, который я нашел сейчас, - это использовать $(this).off(event), который в некоторых случаях может отменить привязку вашей .on(функции) сразу после ее использования
например:
$(body).on("click",function(event){ //если пользователь щелкнет за пределами #yourdiv, удалите его и отсоедините .on(function) if( ! $("#yourdiv").is(event.target)){ $("#yourdiv").remove() //используем off(), чтобы отменить привязку этого события $(это).off(событие) } }) Я хочу привязать событие клика к $("*"), чтобы отслеживать, нажимает ли пользователь за пределами блока, а затем отменить привязку этого события клика.
Я уже пробовал:
$("*").on("click", function(event) { if (!$("#block").is(event.target)) { //сделай что-нибудь $("*").off("клик") } }) Но это работает плохо, потому что я сделал много такого типа on(function) для $("*"), что создает много прерываний и вся система взрывается.
Мне нужно знать, как отменить привязку "this" функции, связанной с on(функцией), но не делать ничего с другими функциями (даже если они все привязаны к одной цели).
Или как я могу прослушать щелчок, который происходит за пределами блока (все, что я пробовал, скопировано из ответов 2012 года, может быть, есть какой-нибудь более разумный способ?)
Спасибо за любую помощь!
издание:
Я попробовал это, сделанное Марком Байдженсом
$("#container").one("click",":not(.exclude, .exclude *)",(event)=>{ событие.stopPropagation(); //сделай что-нибудь }) но моя структура такая:
И мой новый вопрос: мне нужно прослушать щелчок в контейнере, и когда он не раскрывается в
Мобильная версия