Я пытаюсь использовать делегирование событий для разных форм на одной странице. Тем не менее, я получаю интересную проблему, пытаясь представить формы.Javascript: Понимание обработки делегирования событий
Я попытался «щелкнуть» по одной форме (предназначенной для кнопки отправки), зная, что событие делегирует по умолчанию «щелчок» по всей форме.
Однако проблема связана с тем фактом, что событие «щелчок» на самом деле задано на всей странице, а не только на форме или на элементе кнопки. Поэтому, когда я нажимаю на страницу, запускается событие «click» для формы. И это происходит для всех браузеров.
То же самое происходит для события «change». Когда я устанавливаю событие «change» в форме, он запускается как для дочерних полей формы, так и для других полей вне конкретного узла формы.
Так что, хотя я знаю, что были questions, прошу о делегировании событий раньше, они действительно не отвечают на эту проблему. Это даже проблема? Может быть, именно так должно работать мероприятие? Но если это так, то разве это не пустая трата памяти для событий, которые будут инициированы для всего документа? Каково решение?
Кроме того, существует ли кросс-браузерный способ прекратить распространение в чистом Javascript? Лучшее, что я нашел, было на Quirksmode.org:
function doSomething(e)
{
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
}
Я знаю, что могу фильтровать события по типу, когда срабатывает, но в том, что единственное, что можно сделать? Пожалуйста, помогите мне понять это!
Edit:
Конкретный вопрос, является ли делегирование события в форму для обработки событий на своих конкретных областях будет/может также вызвать события на остальной части документа? Если да, то как справиться с этим? И если это не предполагаемое поведение делегирования событий, то что может быть причиной этого?
ТЛ; др. Вы должны быть более точными и лаконичными - каков ваш вопрос? – Reinmar
Просто добавил конкретный вопрос. :) – user
Хм ... Теперь у меня нет вашего вопроса, но, возможно, другие делают :) – Reinmar