我正在尝试使用knockout将点击绑定到表格中的一行,如下所示:
<tr data-bind="click: $root.selectItem">
效果很好。问题是当我尝试排除某些列进行点击操作时。我有编辑和删除行中的按钮,我不希望它们触发selectItem单击事件。我是否只需要绑定所有我希望以这种方式处理click事件的td,或者是否有更简单的方法来执行此操作?
答案 0 :(得分:21)
更新:您可以通过添加clickBubble: false
作为凯文Obee建议的click
绑定的附加绑定来避免自定义绑定,并在此示例中进行了演示:http://jsfiddle.net/kevinobee/Q25ja/2/
原始:您可以使用包装click
绑定的自定义绑定,并防止发生其他事件。它可能看起来像:
ko.bindingHandlers.clickAndStop = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel, context) {
var handler = ko.utils.unwrapObservable(valueAccessor()),
newValueAccessor = function() {
return function(data, event) {
handler.call(viewModel, data, event);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
};
};
ko.bindingHandlers.click.init(element, newValueAccessor, allBindingsAccessor, viewModel, context);
}
};