2010-03-03 2 views
3

Обработка событий jquery javascript if on event (например, 'click') связывает одну функцию для родительского элемента и другую функцию-обработчик для дочернего элемента DOM, из которого они вызывается? Если все они будут звонить в каком порядке? Спасибо!Порядок обработки событий

ответ

5

События пузыря «вверх» дерева DOM, поэтому, если у вас есть обработчики для элемента и его родителя, сначала будет вызываться обработчик дочерних элементов.

Если вы зарегистрируете более одного обработчика события для одного элемента DOM (например, более одного обработчика щелчка для одной кнопки), то обработчики вызываются в том порядке, в котором они были прикреплены к элементу ,

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

  • С передается в параметре события, вызовите event.preventDefault() сохранить любой «родной» действие происходило
  • вызова event.stopPropagation(), чтобы событие из барботажных вверх по дереву DOM
  • возвращения ложного из обработчика, и остановить распространение и предотвратить по умолчанию

Обратите внимание, что для некоторых элементов ввода (флажки, переключатели) обработка немного странная. Когда вызывается ваш обработчик, браузер уже установил флажок «checked» в противоположность его предыдущему значению. То есть, если у вас есть флажок, который не установлен, тогда обработчик «щелчка» заметит, что атрибут «checked» будет установлен на «true», когда он вызывается (после щелчка пользователя). Однако, если обработчик возвращает false, значение флажка фактически НЕ будет изменено щелчком, и оно останется не проверенным. Итак, это похоже на то, что браузер выполняет половину «родного» действия (переключает атрибут «checked») перед вызовом обработчика, но только действительно обновляет элемент, если обработчик не возвращает false (или вызывает «preventDefault») "на объект события).

+0

будет называться родительским обработчиком или нет? – Andrew

+0

Вызывается родительский обработчик, если он не предотвратит это событие - см. Мой (отредактированный) ответ – Pointy

+0

Спасибо! это очень полезно для меня. – Andrew

0

Ребенок будет вызываться первым, а затем родителем.

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

Смежные вопросы