javascript - knockout 复选框切换 css 类并在单击时切换选中

标签 javascript css knockout.js checked

<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},同时还使用 knockout checked: css: 和 click: 来选中和取消选中复选框。有什么想法我做得不对吗? jsfiddle

最佳答案

您可以尝试使用 attr 绑定(bind)并直接绑定(bind)到 class 属性,而不是使用 css 绑定(bind)。您可以使用 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);

这是更新后的 fiddle 的链接,它演示了这一点:

http://jsfiddle.net/KDypD/56/

关于javascript - knockout 复选框切换 css 类并在单击时切换选中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37941007/

相关文章:

javascript - 为什么在 youtube 视频之间导航时 youtube ytplayer 对象不更新?

javascript - 在迭代器内部访问外部数据库时出现问题

javascript - 当滚动到达某个点时事件无限次触发

html - 替代 mailto : to link email

javascript - 使用现有指令的 AngularJS DOM 操作

css - 如何在 Ember 中有条件地应用 CSS 类?

css - 如何让标题中的横幅流到 Logo 后面?需要有反应

knockout.js - 是否可以将 KnockoutJS 与屏蔽输入一起使用?

javascript - 选择日期后打开第二个日期选择器

javascript - Knockout JS 声明式绑定(bind)内部如何工作