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 に答える