如何从 Knockout.js 中的复选框列表中仅选择一个复选框
How to select only a single checkbox from a list of checkboxes in Knockout.js
我有一个以下代码的 DOM 结构:
<tr>
<td><label><input type="checkbox"></label></td>
</tr>
<tr>
<td><label><input type="checkbox"></label></td>
</tr>
... etc
使用 KNOCKOUT.js,当我选择单个复选框时,我希望能够仅突出显示具有背景色的父行。现在,我设法实现的代码会选择所有复选框并突出显示所有行,如本小提琴所示。
值得注意的是,我的行数是动态的,可能非常大,因此需要一个可扩展的解决方案。我已经尝试理解可观察数组的概念,但我走得不远。
如何使用挖空实现上述逻辑?谢谢。
使用observableArray
(小提琴链接)查看此解决方案:
- 我创建了一个构造函数
Checkbox
方法,该方法创建复选框项。 - 请注意,每个复选框都有一个可观察量,用于检测何时选择项目。
- 我还有一个装满复选框对象的
observableArray
。 - 然后,我只需要一个
foreach
绑定来呈现数组中的所有复选框。 - 在
foreach
绑定中,我添加了几个绑定来显示标签,以检测何时选中复选框并在选中时突出显示它。
.HTML
<div data-bind="foreach: checkboxes">
<div data-bind="css: {'selected': isSelected}">
<label>
<input type="checkbox" data-bind="checked: isSelected"/>
<span data-bind="text: label"></span>
</label>
</div>
</div>
.CSS
.selected {
background-color: yellow;
}
.JS
var Checkbox = function(label){
this.isSelected = ko.observable(false);
this.label = label;
};
var checkboxes = [new Checkbox('Item 1'), new Checkbox('Item 2'), new Checkbox('Item 3')];
ko.applyBindings({
checkboxes: ko.observableArray(checkboxes)
})
它是如此可扩展,因为您只需要向observableArray
添加new Checkbox()
。
相关文章:
- 通过复选框选择形成填充
- jQuery根据相关复选框选择求和单元格
- 根据用户复选框选择显示或隐藏下拉框
- 复选框选择组合
- 如何根据角度中的复选框选择过滤结果
- 根据复选框选择 jQuery 更新文本框
- jquery选择复选框选择的值
- 复选框选择/取消选择触发器第一次工作,但在随后的尝试中失败
- 如何发布单选和复选框选择?表单由php和js处理
- 使用querySelectorAll进行的复选框选择不起作用
- 具有延迟的多个复选框选择以检查其他复选框更改
- 显示 jQuery 复选框选择
- 复选框选择似乎彼此不一致
- 一个变量,多个复选框选择/取消选择 jQuery
- 使用 Json 数据源在数据表中实现复选框选择
- 使用 Javascript 更新复选框选择时的输入字段
- 将复选框选择保留在多页分页中
- 在复选框选择后验证输入类型文本
- 如何根据 Javascript 中的复选框选择打开引导模式窗口
- 如何检测和获取 asp.net 中的复选框/选择框(html 标记)值