jquery firefox stopPropagation ()

Я связываю два обработчика событий с полем ввода на 'keydown'. Если клавиша Enter была нажата, первый обработчик событий должен остановить распространение события так, чтобы это не поражало второй eventhandler. Я делаю его как так:

if (jQuery.browser.msie) {
                    event.cancelBubble = true;
                } else {
                    event.stopPropagation();
                }

теперь это одно не останавливает распространение события или в IE или в Firefox. Это поражает первый обработчик событий и затем поражает второй обработчик событий также. Однако во втором обработчике событий, я могу на самом деле проверить если (e.cancelBubble) в случае IE. Существует ли способ проверить то же с Firefox?

5
задан Riz 8 January 2010 в 18:11
поделиться

1 ответ

Просто удалите свой тест для IE и используйте его:

event.stopImmediatePropagation();

Это предотвратит запуск других событий в обоих браузерах.

event.stopPropagation () предотвратит всплытие событий, но не будет препятствовать запуску других обработчиков событий для того же объекта.

Чтобы ответить на ваш другой вопрос, если вы просто использовали event.stopPropagation () , вы можете проверить event.isPropagationStopped () во втором обработчике.

Предложение : как правило, jQuery полностью абстрагирует поведение всех браузеров, чтобы обеспечить единый интерфейс для функциональности. Если вы обнаружите, что запускаете if (jQuery.browser.msie) перед запуском функции jQuery, вероятно, есть лучший способ запустить его, который будет работать в разных браузерах. И, когда вам действительно нужно протестировать, вы должны использовать jQuery.support для проверки функциональности, а не специфического анализа браузера.

13
ответ дан 18 December 2019 в 14:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: