这似乎是结合<event>Bubble: false
,只有当有工作定义的事件处理程序 ( 见注4) <event>
。
这里有一个例子小提琴 。
对于具有对某些事件的处理程序本土元素(例如点击: <textarea>
, <a>
, <select>
等),其中原生处理器就足够了,我希望设置绑定,比如, clickBubble: false
他们,不不必绑定一个“假”的处理程序,工作。
我想我的问题是,是否有另一个淘汰赛的方式来实现这一目标而无需额外的绑定?
这似乎是结合<event>Bubble: false
,只有当有工作定义的事件处理程序 ( 见注4) <event>
。
这里有一个例子小提琴 。
对于具有对某些事件的处理程序本土元素(例如点击: <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/