Я пытаюсь улучшить текстовое поле HTML с некоторыми элементами управления BB-Code, которые должны быть доступны только в том случае, если в textarea есть фокус. Желаемое поведение выглядит следующим образом:jQuery и событие bubbling: остановить нежелательные события
Изображение 1 - перед тем событие фокуса: before focus event http://gaedekenet.de/tmp/beforeInit.jpg
Изображение 2 - после того, как событие фокуса (правильное поведение): correct behaviour http://gaedekenet.de/tmp/afterInit.jpg
выше правильное поведение выполняется щелчком в нижней части текстового поля, где не отображаются кнопки. Но всякий раз, когда пользователь нажимает кнопку в верхней левой части текстового поля, то происходит следующее:
Изображение 3 - после того, как событие фокуса (неправильное поведение): erroneous behaviour http://gaedekenet.de/tmp/afterInit_error.jpg
Мне кажется, что не только Событие «фокус» запускается, но также «нажмите», «mousedown», «mouseup» и т. д.
Что мне нужно сделать сейчас, это остановить распространение события в моем собственном коде (часть фокусировки), чтобы никакие события не могут попасть в плагин BB Code (который является сторонним плагином). Мой текущий подход выглядит следующим образом:
$(#myText)
.focus(function(e){
e.stopPropagation().stopImmediatePropagation();
// initialize and show the bb code buttons here
})
.click(function(e){
e.stopPropagation().stopImmediatePropagation();
})
.mouseup(function(e){
e.stopPropagation().stopImmediatePropagation();
})
.mousedown(function(e){
e.stopPropagation().stopImmediatePropagation();
});
Что мне не хватает?
вы ли попробовать e.preventDefault()? –