使用knockoutjs和jquery mobile,我需要从数组中创建一个复选框列表。似乎复选框列表已呈现,但它没有响应click。 http://jsfiddle.net/9zx7F/
我使用了一个带有控制组数据角色的fieldset标签来构建列表。我也用listview尝试过ul,同样的问题。
编辑:进一步的细节 - 我发现它似乎与ko.applyBindings的时间有关。我创建了一个在我的localhost上运行相同代码的页面,没关系。然后在ko.applyBindings周围添加了一个计时器,问题再次发生。 http://jsfiddle.net/gonglei/9zx7F/12/
答案 0 :(得分:1)
我用两步解决了这个问题;
1)从输入中展开标签并将其与'for'属性
连接在一起 <input type="checkbox" data-role="checkbox" data-bind="uniqueName: true, uniqueID: true, value: ID />
<label data-bind="uniqueIDFor: true" >Click me</label>
ko.bindingHandlers.uniqueIDFor = {
init: function (element) {
element.setAttribute("for", "ko_unique_" + ko.bindingHandlers.uniqueName.currentIndex);
}
};
ko.bindingHandlers.uniqueID = {
init: function (element) {
element.setAttribute("id", "ko_unique_" + ko.bindingHandlers.uniqueName.currentIndex);
}
};
2)告诉jqm更新新内容
$('input:checkbox').trigger('create');
答案 1 :(得分:0)
我会改变这个模型:
<!-- ko foreach: listItems-->
<input type="checkbox" name="itemsList" value="name" />
<span data-bind="text: name"></span>
<!-- /ko -->
要考虑的主要事情是输入控件中的“value”属性以正确的方式呈现。
的问候。
答案 2 :(得分:0)
@ tredder的解决方案有效!这是你的小提琴的一个分支,使用attr
数据绑定属性来绑定标签,这对我看起来更干净:http://jsfiddle.net/aib42/AnKR6/