stopPropagation не работает на chrome + live методы - PullRequest
3 голосов
/ 13 ноября 2010

В этих двух пунктах я вызываю определенную функцию

$('.item >li> div').click(function (e) {
$('.item .time').live('mousedown', function (e) {
     e.stopPropagation();

В опере, firefox это работает нормально. В Chrome, когда я нажимаю на div времени, моя функция запускается дважды, а не один раз. В jquerys Дополнительные примечания упоминается это

Так как метод .live () обрабатывает события, как только они распространились на верхняя часть документа, это не можно остановить распространение в прямом эфире События. Аналогично, события обрабатываются .delegate () всегда будет распространяться на элемент, к которому они относятся делегированы; обработчики событий на любом элементы под ним уже будут иметь было выполнено к тому времени, когда вызывается делегированный обработчик события.

хорошо, хорошо, но как мне остановить запуск моей функции дважды? также, если я удалю строку stopPropagation, firefox и Opera будут иметь ту же проблему.

с использованием jquery 1.4.4

Ответы [ 2 ]

2 голосов
/ 07 февраля 2011

click и mousedown являются различными событиями, остановка распространения одного из которых никак не повлияет на другое. Кроме того, прямые события запускаются после обычных событий, поэтому вам все равно придется вызывать stopPropagation в обычном обработчике событий.

0 голосов
/ 26 мая 2011

Я обманул и только что проверил с помощью jquery, что это за браузер, и если у него хром, я просто возвращаюсь.Он отлично работает в банкоматах.

Если он работает с оператором if, он, скорее всего, сработает, если вы удалите оператор if и только что вернули независимо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...