Уровень документа jquery onmousedown вызывается перед обработчиками щелчков элемента - PullRequest
1 голос
/ 21 мая 2010

Я использую jquery 1.3.2.

Я регистрирую два обработчика следующим образом:

$(document).onmousedown(dochandler)

$('#element').click(elemhandler)

Когда я нажимаю на элемент #element, оба обработчика вызывают. И удивительно, что dochandlers вызывают перед elemhandler. Я попытался изменить порядок регистрации вышеуказанного обработчика, но безрезультатно.

Оба обработчика возвращают false, чтобы избежать распространения события.

Насколько я понимаю, elemhandler должен вызываться при нажатии #element. Так как я возвращаю false из Elemhandler, dochandler не должен вызываться. И даже если вызывается dochandler, он не должен вызываться раньше elemhandler.

Есть идеи, что здесь может быть не так? Спасибо.

Ответы [ 3 ]

4 голосов
/ 21 мая 2010

Это два отдельных события, поэтому возвращение false для одного не повлияет на другое. Событие щелчка вызывается при отпускании кнопки мыши: http://api.jquery.com/click/

0 голосов
/ 21 мая 2010

Событие click означает, что кнопки мыши нажаты и отпущены. mouseDown только нажата. Например, если вы выполняете перетаскивание, происходит событие mouseDown, затем любое число mouseMove и, наконец, mouseUp.

Так что да, mouseDown срабатывает до click. И, как говорили другие, это разные события, поэтому они не влияют друг на друга.

0 голосов
/ 21 мая 2010

dochandler называется предыдущим elemhandler, потому что событие mousedown происходит перед событием щелчка, и, как упоминал poswald, это два отдельных события, и они не влияют друг на друга.

...