KNOCKOUTJS 复选框,然后单击父 TD
knockoutjs checkbox and click on parent td
我有一个有一行的表。该行有一个TD(其中包含一个复选框),在TD上我有一个单击功能。这样,当单击TD时,复选框将被选中/取消选中。
当我单击TD时,它工作正常,但是当单击复选框时,复选框的(视觉)值不会改变(它不会被选中/取消选中)
想要的情况是:
-
当我单击复选框时,复选框的(可视)值会发生变化,我可以调用一个函数。
-
当我单击TD时,复选框的(视觉)值会发生变化,我可以调用一个函数。(例如进行 AJAX 调用)
我们如何才能做到这一点?
示例代码
问题是,
当您单击checkbox
时,TD
的单击处理程序也会触发,这意味着checkbox
会被checkbox
的默认单击处理程序和TD
的自定义单击处理程序更改(它们相互抵消)。解决方案是防止checkbox
上的点击冒泡到TD
。您可以使用以下绑定在 Knockout 中执行此操作:click:function(){return true}, clickBubble:false
。
这是在行动:http://jsfiddle.net/mbest/Eatdh/12/
但是,我确实认为使用label
是一种更好的方法(请参阅我的另一个答案)。
为避免点击事件问题,请使用 label
元素使更大的区域可点击。在这里,我将标签设置为块元素,因此它占据了整个td
:
<td>
<label style="display: block">
<input type="checkbox" data-bind="checked: checkBox" />
</label>
</td>
请参阅 http://jsfiddle.net/mbest/LsxSh/
Td 事件似乎覆盖了输入的检查点击事件
单击该复选框将调用 TD 的单击处理程序代码:
self.checkBox(!self.checkBox());
这将删除检查。
这不是很干,但它快速而实用: 小提琴
<td data-bind="click:tdClick">
<input type="checkbox" data-bind="checked: checkBox, click:tdClick" />
</td>
相关文章:
- 单击时如何突出显示表TD
- Jquery 无法在单击时选择和取消选择 td
- 单击按钮,如何获取与类最接近的td值
- 单击td时,更改bgcolor
- 如何将单击事件绑定到动态创建的TD
- 无法停止表td上的单击功能
- KNOCKOUTJS 复选框,然后单击父 TD
- 单击复选框时获取下一个TD的内容
- 单击时获取TR的所有TD元素
- 如何在span上获取表td值,然后单击删除该行
- 单击时切换td标记
- 单击添加和删除表格数据的背景色(td)
- 表单元格内span或td的单击事件处理程序不起作用
- 单击“将类添加到第一个”<td>在行中并且对应<th>表中
- 单击按钮javaScript后更改td单元格的值
- 如何在单击并悬停时更改td元素背景
- html嵌套表通过单击表行第一个td来隐藏或显示表行
- 单击子td时如何获取th
- 单击按钮时从td获取值
- Jquery排除单击时的第一个td事件