JQuery: Как использовать event.preventDefault() с настраиваемыми событиями?
Как я могу узнать в своем кодах запуска, который был вызван preventDefault
?
$(document).trigger('customEvent', params);
if (/* ??? */)
doDefaultActions();
Ответы
Ответ 1
trigger() также может принимать объект события, поэтому, если вы можете создать объект события, например:
var event = jQuery.Event("customEvent");
$(document).trigger(event);
то вы можете проверить после триггера, чтобы увидеть, вызвана ли функция preventDefault() так:
var prevented = event.isDefaultPrevented();
Ответ 2
Если вы спрашиваете, как определить, было ли предотвращено по умолчанию, используйте:
event.isDefaultPrevented()
Это вернет 'true' или 'false' в зависимости от того, была вызвана функция notDefault().
EDIT:
http://api.jquery.com/event.isDefaultPrevented/
Ответ 3
Пользовательские события не имеют каких-либо действий по умолчанию, которые происходят. (они являются обычными).
С другой стороны, если вы хотите остановить эффект барботирования этого события для других, посмотрите на triggerHandler
, который не доходит до иерархии..
Ответ 4
Насколько я знаю, вызов "preventDefault()" предотвращает ответы на родном браузере на такие вещи, как клики на якорных тегах или нажатия клавиш в текстовых полях. Как только цикл обработки событий закончится, он закончится. Для созданных событий я не думаю, что это имеет никакого эффекта, поскольку все это касается системы обработки событий jQuery, а не о встроенных функциях браузера.
Ваш код мог бы установить какой-то флаг где-то, чтобы общаться с "внешним миром".
[edit] ooh вы могли бы попробовать, чтобы обработчик затащил ссылку на объект события где-то, что внешний код может найти его, а затем внешне проверить с помощью "isDefaultPrevented()". Я не знаю, будет ли это работать.