Knockout.js中使用的唯一ID;对于“;单选按钮组中的标签属性
Knockout.js unique IDs for use in "for" label attribute in radio button groups
我在这里实现了一个非常巧妙的答案的变体,用于为Knockout标记中的输入和相应标签生成唯一ID。我的最终目标是可点击的标签,而不是唯一的ID本身——我以前一直在每个标签上使用点击绑定来导航DOM以选择其输入,但这似乎很糟糕,效率很低。
然而,链接的解决方案不适用于单选按钮组,因为组中的每个单选按钮都绑定回相同的可观察对象。在我的情况下,我的无线电组要么是真/假(绑定回布尔可观测值),要么表示枚举,在这种情况下,可观测值包含一个整数值。所提供的解决方案导致一组中的所有无线电(以及它们对应的属性标签)获得相同的ID。
更为复杂的是,这些单选按钮集本身会出现多次。例如,可能有10个模板化的div,每个div都有一组3个单选按钮:红色、绿色、蓝色——每个单选按钮都有一个标签,我想在单击时激活相应的单选按钮。
我一直在努力修改这个解决方案,但我的大脑现在已经锁住了。欢迎有任何想法!
根据我的评论,一个使用RP绑定和修改的小提琴
ko.bindingHandlers.uniqueId = {
init: function(element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor();
var idMod = 'id-' + (allBindingsAccessor().uniqueMod || 0);
value[idMod] = value[idMod] || ko.bindingHandlers.uniqueId.prefix + (++ko.bindingHandlers.uniqueId.counter);
element.id= value[idMod];
},
counter: 0,
prefix: "unique"
};
ko.bindingHandlers.uniqueFor = {
init: function(element, valueAccessor, allBindingsAccessor) {
var value = valueAccessor();
var idMod = 'id-' + (allBindingsAccessor().uniqueMod || 0);
value[idMod] = value[idMod] || ko.bindingHandlers.uniqueId.prefix + (++ko.bindingHandlers.uniqueId.counter);
element.setAttribute("for", value[idMod]);
}
};
示例用法:
<input type="radio" data-bind="checked: gender, attr: { name: 'gender-' + id() },
uniqueId: gender, uniqueMod: 'male'" value="1" />
<label data-bind="uniqueFor: gender, uniqueMod: 'male' ">Male</label>
<input type="radio" data-bind="checked: gender, attr: { name: 'gender-' + id() },
uniqueId: gender, uniqueMod: 'female'" value="2" />
<label data-bind="uniqueFor: gender, uniqueMod: 'female '">Female</label>
相关文章:
- vue-js-单选按钮won't默认情况下使用v-model属性进行检查
- JavaScript / jquery:如果选择了单选按钮并且数据属性符合条件,则添加类
- 当我关联runat=“server”属性时,JQuery UI 按钮集在单选按钮上不起作用
- 单选按钮和复选框.防止更改值属性
- 我可以't获取单选按钮上的onclick属性以执行javascript函数
- Knockout.js中使用的唯一ID;对于“;单选按钮组中的标签属性
- 根据单选按钮id属性调用ajax jquery
- 使用FOR属性从与单选按钮关联的html标签中获取值
- 将必需属性添加到DIV On单选按钮更改中的输入
- 选择所有没有值属性的单选按钮的最安全方法
- 在 JS 的单选按钮元素 (HTML) 中使用 title 属性
- 如何转换我的 js 代码,以便对象的每个属性都通过输入值和单选按钮值更新
- 单选按钮检查属性在函数 - JavaScript 中失败
- Ruby - Selenium Webdriver , AngularJS 单选按钮无法检测属性
- 选择单选按钮时删除禁用属性
- 使用 Jquery 从对象属性填充单选按钮
- 具有动态单选按钮的必需属性(NG 重复)
- 引导数据切换单选按钮/复选框选中属性
- 使用 Angularjs 中的单选按钮动态添加 url 和 alt 属性
- 如何通过单击附近的单选按钮来删除文本框的禁用属性