Порядок обработки событий - PullRequest
3 голосов
/ 03 марта 2010

javascript обработка события jquery, если при событии (например, «щелчок») связала одну функцию для родительского элемента и другую функцию-обработчик для дочернего элемента DOM, какие из них вызываются?Если все они будут звонить в каком порядке?Спасибо!

Ответы [ 2 ]

5 голосов
/ 03 марта 2010

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

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

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

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

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

0 голосов
/ 03 марта 2010

Сначала будет вызван ребенок, затем родитель.

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

...