淘汰复选框问题

时间:2013-04-24 11:43:04

标签: javascript jquery knockout.js

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

演示JSFiddle.

另请参阅文档:Note 3: Allowing the default click action

顺便说一句,如果您使用的是复选框,还应考虑使用checked binding