Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果父项具有onclick绑定,则复选框单击“忽略”_Javascript_Dom_Knockout.js - Fatal编程技术网

Javascript 如果父项具有onclick绑定,则复选框单击“忽略”

Javascript 如果父项具有onclick绑定,则复选框单击“忽略”,javascript,dom,knockout.js,Javascript,Dom,Knockout.js,如果父项“onclick”事件绑定到函数,则单击复选框将被忽略我不希望发生这种情况:我该怎么做?我已经精简了我的代码来说明这个问题 HTML: 小提琴:。试着点击复选框:似乎什么都没有发生(不是真的:我稍后会解释发生了什么) 删除对container div的someFunction调用会导致预期的行为。请参见示例:。显然,这并不能解决问题,因为我还需要调用someFunction 我使用调试器跟踪了代码,注意到单击实际上没有被忽略,但发生了一长串事件,最后一个事件是恢复复选框的值(因此,使单

如果父项“onclick”事件绑定到函数,则单击复选框将被忽略我不希望发生这种情况:我该怎么做?我已经精简了我的代码来说明这个问题

HTML:

小提琴:。试着点击复选框:似乎什么都没有发生(不是真的:我稍后会解释发生了什么)

删除对container div的
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; };
}