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

StackOverflow https://stackoverflow.com/questions/2229647

  •  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 ()». Однако я не знаю, сработает ли это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top