如果父母“onclick”事件绑定到某个功能,则会忽略复选框。 我不希望这种情况发生:我该怎么做?我已经删除了我的代码以说明问题。
HTML:
<div class="container" data-bind="click: someFunction">
Click me: <input type="checkbox" data-bind="checked: selected" />
</div>
JS:
function vm() {
this.selected = ko.observable(true);
this.someFunction = function(){};
}
ko.applyBindings(new vm());
小提琴:here。尝试点击复选框:似乎没有任何反应(不正确:我稍后会解释会发生什么)。
删除对容器div的someFunction
调用会导致预期的行为。请参阅示例:here。显然,这并不能解决问题,因为我也需要调用someFunction
。
我已经使用调试器跟踪代码,并注意到实际上没有忽略点击但是发生了一系列长事件,最后一个事件正在恢复复选框的值(因此,使点击无效)。
要使用调试器关注此链,我已在复选框上绑定了一个点击事件。
<div class="container">
Click me: <input type="checkbox" data-bind="click: startDebug, checked: selected" />
</div>
随意打开您的开发工具,看看我们在startDebug函数内部时是如何实现预期的行为(但稍后会恢复到错误的行为)。拨打调试器电话:here。
答案 0 :(得分:2)
您只需从true
处理程序返回click
即可触发浏览器的默认点击操作:
function vm() {
this.selected = ko.observable(true);
this.someFunction = function(){ return true; };
}
演示JSFiddle。
另请参阅文档:Allowing the default click action(可能下一个注释Preventing the event from bubbling也相关)