似乎只有在有一个定义的事件处理程序(请参见注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/