【发布时间】:2013-12-18 04:48:57
【问题描述】:
有了这个小提琴...
http://jsfiddle.net/jeljeljel/5skHX/
...请注意,当单击“单击我”链接时,tbody 元素会处理从 td 元素冒泡的单击事件。但是,当您单击复选框时,仍会调用单击处理程序。如何防止点击事件从复选框冒泡?
HTML
<table>
<thead>
<tr>
<th></th>
<th>Col 1</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" data-bind="checked: itemSelected" />
</td>
<td>[Click me]</td>
</tr>
</tbody>
</table>
<div id="clicks" data-bind="text: clicks"></div>
JAVASCRIPT
function Model() {
var self = this;
self.value = ko.observable();
self.clicks = ko.observable(0);
self.itemSelected = ko.computed({
read: function () {
return self.value();
},
write: function (value) {
self.value(value);
return true;
},
deferEvaluation: true
});
}
var model = new Model();
ko.applyBindings(model);
$('tbody').click(function () {
model.clicks(model.clicks() + 1);
});
【问题讨论】:
-
是的,我看到了,但是从我的处理程序返回 'true' 并没有解决问题。
-
你需要
click: function() { return true; }, clickBubble: false: jsfiddle.net/Q8sRF -
是的!这就是答案。谢谢!
标签: javascript jquery knockout.js