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

Как я могу знать в своем коде инициирования это preventDefault был назван?

$(document).trigger('customEvent', params);
if (/* ??? */)
    doDefaultActions();
34
задан thorn̈ 5 January 2015 в 21:00
поделиться

4 ответа

trigger() также может принимать объект события, поэтому если вы можете создать объект события, например:

var event = jQuery.Event("customEvent");
$(document).trigger(event);

то вы можете проверить после триггера, не была ли вызвана функция preventDefault() так:

var prevented = event.isDefaultPrevented();
46
ответ дан 27 November 2019 в 17:00
поделиться

Если вы спрашиваете, как узнать, было ли предотвращено значение по умолчанию, используйте:

event.isDefaultPrevented ()

This вернет true или false в зависимости от того, был ли вызван метод preventDefault ().

РЕДАКТИРОВАТЬ: http://api.jquery.com/event.isDefaultPrevented/

1
ответ дан 27 November 2019 в 17:00
поделиться

Насколько мне известно, вызов preventDefault () предназначен для предотвращения реакции собственного браузера на такие вещи, как щелчки по тегам привязки или нажатия клавиш в текстовых полях. Как только цикл обработки событий закончился, он закончился. Я не думаю, что для придуманных событий это имеет какое-либо влияние, поскольку все дело в системе обработки событий jQuery, а не в собственных функциях браузера.

В вашем коде может быть установлен какой-то флаг, чтобы взаимодействовать с "внешним миром".

[edit] ох, вы могли бы попробовать спрятать обработчик ссылка на объект события где-нибудь, где внешний код может его найти, а затем внешняя проверка с помощью "isDefaultPrevented ()". Однако я не знаю, сработает ли это.

0
ответ дан 27 November 2019 в 17:00
поделиться

Custom events не имеет некоторых действий по умолчанию, которые происходят ... (они пользовательские).

С другой стороны, если вы хотите остановить пузырьковый эффект этого события для других, то посмотрите на triggerHandler , который не пузырится вверх по иерархии ...

.
1
ответ дан 27 November 2019 в 17:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: