首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于没有处理程序的元素,防止事件冒泡

对于没有处理程序的元素,防止事件冒泡
EN

Stack Overflow用户
提问于 2012-12-18 22:06:37
回答 1查看 4.5K关注 0票数 8

绑定<event>Bubble: false似乎只在定义的事件处理程序 (参见注释4)用于<event>时才能工作。

下面是一个例子小提琴

对于具有特定事件的本机处理程序(例如,单击:<textarea><a><select>等)的元素,只要本机处理程序就足够了,我希望在它们上设置绑定(例如,clickBubble: false ),而不必绑定“伪”处理程序。

我想我的问题是,在没有额外绑定的情况下,是否还有另一种可行的方法来实现这一目标呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 22:43:11

Bubble处理程序不是实际的绑定处理程序,在event绑定中用作选项(click绑定调用event绑定)。所以,他们不是自己跑的。

因此,您可以添加一个“虚假”的非op处理程序,并使用clickBubble,或者您当然可以选择创建一个自定义绑定来为您执行此操作。

也许是这样:

代码语言:javascript
复制
ko.bindingHandlers.preventBubble = {
    init: function(element, valueAccessor) {
        var eventName = ko.utils.unwrapObservable(valueAccessor());
        ko.utils.registerEventHandler(element, eventName, function(event) {
           event.cancelBubble = true;
           if (event.stopPropagation) {
                event.stopPropagation();
           }                
        });
    }        
};

然后把:

代码语言:javascript
复制
<input data-bind="preventBubble: 'click'" />

您还可以进一步增强它,以便在必要时接受一系列事件。

样本:http://jsfiddle.net/rniemeyer/WcXwZ/

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13942279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档