如果父项具有onclick绑定,则复选框单击将被忽略
checkbox click ignored if parent has onclick bind
如果父"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());
菲德尔:给。试着点击复选框:似乎什么都没发生(不是真的:我稍后会解释发生了什么)。
删除对容器div的someFunction
调用将导致预期的行为。参见示例:此处。显然,这并不能解决问题,因为我也需要调用someFunction
。
我用调试器跟踪了代码,注意到点击实际上并没有被忽略,而是发生了一长串事件,其中最后一个事件是恢复复选框的值(从而使点击无效)。
为了使用调试器遵循这个链,我在复选框上绑定了一个点击事件。
<div class="container">
Click me: <input type="checkbox" data-bind="click: startDebug, checked: selected" />
</div>
请随意打开您的开发工具,看看在startDebug函数中是如何实现预期行为的(但后来又恢复到错误的)。调试程序调用:在这里。
您只需要从click
处理程序返回true
即可触发浏览器的默认点击操作:
function vm() {
this.selected = ko.observable(true);
this.someFunction = function(){ return true; };
}
演示JSFiddle。
另请参阅文档中的:允许默认点击操作(可能是下一个注意事项防止事件冒泡也相关)
相关文章:
- 如何在单击复选框后调用控制器方法
- 在GridView中,当单击复选框时,在网格的同一行中使用JavaScript将标签中的值添加到TextBox
- 在网页中单击复选框
- 单击复选框时显示日期选择器
- 选择全部单击复选框以及全部拒绝
- 在 Telerik RadGrid 中单击复选框时打开对话框窗口
- 在JS中单击复选框时显示总价
- 单击复选框时重定向
- 如何在单击复选框按钮时制作单选按钮
- 如何使用角度指令控制器动态单击复选框
- 如何通过单击复选框来显示或隐藏网络图表
- 单击复选框时的角度显示一个元素
- 复选框不能通过直接单击复选框来选中或取消选中
- 单击复选框时将此元素添加到收藏夹数组 + 后 Ajax 元素关系
- 单击复选框后未收到复选框事件
- 单击复选框时汇总隐藏字段的值不起作用
- 如何使文本输入框在单击复选框时变为不可写
- 如何在 JSP 中的“单击”复选框时创建删除按钮
- 如何通过单击复选框将文本元素从输入复制到另一个输入
- 单击复选框时如何在 jquery 中创建数组