jQuery和事件冒泡:停止不需要的事件

时间:2014-09-15 15:03:35

标签: jquery event-bubbling stoppropagation

我正在尝试使用一些BB-Code控件来增强HTML textarea,这些控件只有在textarea具有焦点时才可用。所需的行为如下所示:

图片1 - 焦点事件之前: before focus event http://gaedekenet.de/tmp/beforeInit.jpg

图片2 - 焦点事件后(正确行为): correct behaviour http://gaedekenet.de/tmp/afterInit.jpg

通过单击textarea的LOWER部分来完成上述正确的行为 - 其中不会出现任何按钮。但只要用户点击textarea的左上角部分,就会发生以下情况:

图片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();
    });

我错过了什么?

1 个答案:

答案 0 :(得分:1)

e.stopPropagation()停止传播,以防止使用

默认事件
e.preventDefault()

完整的jQuery事件API文档here