[英]knockout checkbox toggle css classes and toggle checked upon click
<div data-bind="css: { highlighted: highlight }, click: toggleHighlight">
random string
</div>
<input type="checkbox" data-bind="css: { 'checked': dimitri, 'unchecked': !dimitri() }, click: toggledimitri, checked: dimitri">
var ViewModel = function() {
var self = this;
self.dimitri = ko.observable(false);
self.toggledimitri = function() { self.dimitri(!self.dimitri()) };
self.highlight = ko.observable(true);
self.toggleHighlight = function () { self.highlight(!self.highlight()) };
}
ko.applyBindings(new ViewModel());
var vm = ko.dataFor(document.body);
我基本上想要的是切換css類{checked和unchecked},同時也使用敲除選中的css:然后單擊:來選中和取消選中該復選框。 有什么想法我做錯了嗎? jsfiddle
如評論中所建議,選中和單擊將有效地彼此抵消。 選中的綁定會自動切換,而單擊會再次手動切換。 刪除點擊可解決此問題。
<input type="checkbox" data-bind="css: { 'checked': dimitri, 'unchecked': !dimitri() }, checked: dimitri">
您可以嘗試使用attr
綁定並直接綁定到class
屬性,而不是使用css
綁定。 您可以使用ko.computed
方法返回適當的CSS類名稱。 另外,您不需要user3297291所述的click
事件。 該復選框將如下所示:
<input type="checkbox" data-bind="attr: { 'class': checkedClass }, checked: dimitri">
而ko.computed
方法將如下所示:
this.checkedClass = ko.computed(function() {
return this.dimitri() ? 'checked' : 'unchecked';
}, this);
這是更新的小提琴的鏈接,它演示了這一點:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.