Я хотел бы реализовать логику подтверждения для ссылок или кнопок, где я могу аннотировать связанный элемент со специальным атрибутом подтверждения данных. Если этот атрибут существует в элементе, я хотел бы добавить обработчик кликов, который может предотвратить любой другой обработчик, включая событие по умолчанию, и другие обработчики jQuery, добавленные до или после добавления моего обработчика подтверждения.Как добавить обработчик событий, который может предотвратить любой другой обработчик событий jQuery?
Вот мой код:
$(document).on("click", "a[data-confirm], button[data-confirm]", function(e) {
var confirmData = $(this).data("confirm");
if (confirmData === "true")
confirmData = $(this).prop("title");
if (confirmData && !confirm(confirmData)) {
e.stopImmediatePropagation();
e.stopPropagation();
e.preventDefault();
return false;
}
return true;
});
Проблема заключается в том, что я не уверен, о том, где этот обработчик будет идти в список обработчиков, так что я думаю, есть хорошая вероятность того, что другие обработчики могли выполняться до Это. Кроме того, я не уверен, что этот обработчик будет преследовать, например, knockoutjs'
щелчок привязки.
Спасибо, первая часть ясна, и я знаю об этом, однако, это не устраивает, потому что я хотел бы, чтобы предотвратить самые низкие обработчик уровня, а не только те, прилагается к документу. Однако я собираюсь проверить вторую часть. –
Мое предположение заключается в том, что третье решение - это то, что на самом деле будет работать, поскольку захват происходит до барботажа. – winhowes
Является ли этот третий фрагмент кода безопасным для браузера? Я знаю о многих причудах о событиях и их proeprties и т. Д. –