4

我有一个复选框,我想在该复选框上绑定一个函数,如果选中该复选框,则该函数会执行某些操作,如果未选中该复选框,则该函数会执行某些操作。

但复选框不会保持选中状态。调用函数时检查,退出函数后取消检查。我究竟做错了什么?

这是我正在尝试做的一个示例: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" />
4

1 回答 1

4

如果要触发默认浏览器事件(例如选中复选框) ,则需要在click处理程序中return true

self.click = function(data,event) {
    if ($('#checkbox').is(':checked')){
        console.log('checked');
    }
    else{
        console.log('unchecked');
    }
    return true;
}

演示JSFiddle。

另请参阅文档:注 3:允许默认单击操作

顺便说一句,如果您使用复选框,还应该考虑使用checked绑定。

于 2013-04-24T11:46:46.790 回答