我有一个复选框,我要绑定一个函数,如果选中复选框则执行某些操作,如果未选中复选框,则执行某些操作。
但是复选框不会保持检查状态。调用函数时会检查它,但在退出函数后它会被取消选中。我做错了什么?
以下是我正在尝试做的一个示例: http://jsfiddle.net/GSeFD/
JS:
function MyViewModel() {
var self = this;
self.click = function(data,event) {
if ($('#checkbox').is(':checked')){
console.log('checked');
}
else{
console.log('unchecked');
}
}
}
ko.applyBindings(new MyViewModel());
HTML:
<input type="checkbox" id="checkbox" data-bind="click: $root.click" />
答案 0 :(得分:4)
在click
处理程序中,如果要触发默认浏览器事件(例如选中复选框),则需要return true
self.click = function(data,event) {
if ($('#checkbox').is(':checked')){
console.log('checked');
}
else{
console.log('unchecked');
}
return true;
}
另请参阅文档:Note 3: Allowing the default click action
顺便说一句,如果您使用的是复选框,还应考虑使用checked
binding。