淘汰赛:防止没有处理程序的元素的事件冒泡



似乎只有在有一个定义的事件处理程序(请参见注4 )的<event>Bubble: false时,CC_1才有效。

这是一个示例小提琴。

对于具有用于某些事件的本机处理程序的元素(例如,单击:<textarea><a><select>等),本机处理程序足够了,我希望在它们上设置绑定,例如,在它们上设置 clickBubble: false,而无需绑定一个绑定"伪造的"处理程序,工作。

我猜我的问题是,有没有淘汰的方法可以实现这一目标而没有额外的绑定?

Bubble处理程序不是实际的绑定处理程序,并且用作event绑定中的选项(click绑定呼叫event绑定)。因此,他们不会自己运行。

因此,您可以添加一个"伪装" no-op处理程序并使用clickBubble,也可以选择创建自定义绑定以为您做到这一点。

也许类似:

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

然后放置:

<input data-bind="preventBubble: 'click'" />

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

示例:http://jsfiddle.net/rniemeyer/wcxwz/

相关内容

  • 没有找到相关文章

最新更新