似乎绑定<event>Bubble: false
仅在为. _<event>
这是一个示例fiddle。
对于具有某些事件的本机处理程序(例如 click: <textarea>
、<a>
、<select>
等)的元素,本机处理程序就足够了,我希望clickBubble: false
在它们上设置绑定,例如,无需绑定“虚假”处理程序即可工作。
我想我的问题是,是否有另一种淘汰方法可以在没有额外绑定的情况下实现这一目标?
处理程序不是实际的Bubble
绑定处理程序,而是用作绑定中的选项event
(click
绑定调用event
绑定)。因此,它们不会自行运行。
因此,您可以添加一个“伪造的”无操作处理程序并使用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/