Javascript 如果父项具有onclick绑定,则复选框单击“忽略”
如果父项“onclick”事件绑定到函数,则单击复选框将被忽略我不希望发生这种情况:我该怎么做?我已经精简了我的代码来说明这个问题 HTML: 小提琴:。试着点击复选框:似乎什么都没有发生(不是真的:我稍后会解释发生了什么) 删除对container div的Javascript 如果父项具有onclick绑定,则复选框单击“忽略”,javascript,dom,knockout.js,Javascript,Dom,Knockout.js,如果父项“onclick”事件绑定到函数,则单击复选框将被忽略我不希望发生这种情况:我该怎么做?我已经精简了我的代码来说明这个问题 HTML: 小提琴:。试着点击复选框:似乎什么都没有发生(不是真的:我稍后会解释发生了什么) 删除对container div的someFunction调用会导致预期的行为。请参见示例:。显然,这并不能解决问题,因为我还需要调用someFunction 我使用调试器跟踪了代码,注意到单击实际上没有被忽略,但发生了一长串事件,最后一个事件是恢复复选框的值(因此,使单
someFunction
调用会导致预期的行为。请参见示例:。显然,这并不能解决问题,因为我还需要调用someFunction
我使用调试器跟踪了代码,注意到单击实际上没有被忽略,但发生了一长串事件,最后一个事件是恢复复选框的值(因此,使单击无效) 为了使用调试器跟踪此链,我在复选框上绑定了一个单击事件
<div class="container">
Click me: <input type="checkbox" data-bind="click: startDebug, checked: selected" />
</div>
单击我:
当我们在startDebug函数中时,请随意打开您的开发工具,看看如何实现预期的行为(但稍后又恢复到错误的行为)。摆弄调试器调用:。您只需从
单击处理程序返回true
,即可触发浏览器的默认单击操作:
function vm() {
this.selected = ko.observable(true);
this.someFunction = function(){ return true; };
}
演示
另请参见文档:(可能下一个注释也会相关)只需从函数返回true
:this.someFunction=function(){return true;}代码>它正在工作!谢谢!我不知怎么错过了那篇文档,非常有用!非常感谢@nemesv,当您将click绑定编写为click:someFunction
时,它会起作用。但是,当您将单击绑定编写为click:function(){$root.someFunction(event)}
时,它不起作用。请看这个。当您以另一种方式声明click绑定时,如何实现相同的结果?@VinitDivekar您没有在绑定中返回someFunction的结果:正确的语法是:data bind=“click:function(){return$root.clicked(event)}”
。
<div class="container">
Click me: <input type="checkbox" data-bind="click: startDebug, checked: selected" />
</div>
function vm() {
this.selected = ko.observable(true);
this.someFunction = function(){ return true; };
}