jQuery: Как использовать event.preventDefault () с пользовательскими событиями?
-
19-09-2019 - |
Вопрос
Как я могу узнать в своем коде инициирующего preventDefault
был вызван?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
Решение
Trigger () также может взять объект события, поэтому, если вы можете создать объект события, например, так:
var event = jQuery.Event("customEvent");
$(document).trigger(event);
Затем вы можете проверить после триггера, чтобы увидеть, был ли вызван предотвращение () так:
var prevented = event.isDefaultPrevented();
Другие советы
Если вы спрашиваете, как выяснить, предотвращается ли по умолчанию, используйте:
event.isDefaultPrevented()
Это вернет «true» или «false» на основе того, был ли вызван предотвращение ().
РЕДАКТИРОВАТЬ:http://api.jquery.com/event.isdefaultprevented/
Пользовательские события не имеют некоторых действий по умолчанию, которые случаются. (Они пользовательские).
С другой стороны, если вы хотите остановить пузырящий эффект этого события на других, то посмотрите на triggerHandler
который не пузырится до иерархии ..
Насколько мне известно, вызов «Предотвратить ()» - это предотвращение ответов на собственных браузеров на такие вещи, как клики по меткам якоря или ключи в текстовых полях. Как только цикл обработки событий закончится, все закончится. Для выдуманных событий я не думаю, что это вообще влияет на систему обработки событий JQUERY, а не на собственных функциональности браузера.
Ваш код может установить какой -то флаг где -то, чтобы общаться с «внешним миром».
РЕДАКТИРОВАТЬ] Ооо, вы можете попробовать, чтобы обработчик спрятал ссылку на объект события где -то, что экстерный код может его найти, а затем проверить с помощью «isDefaultPrevented ()». Однако я не знаю, сработает ли это.