Подтвердить что ты не робот

JQuery: Как использовать event.preventDefault() с настраиваемыми событиями?

Как я могу узнать в своем кодах запуска, который был вызван preventDefault?

$(document).trigger('customEvent', params);
if (/* ??? */)
    doDefaultActions();
4b9b3361

Ответ 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()". Я не знаю, будет ли это работать.