当我尝试触发复选框的单击事件时,复选框数据绑定(bind)值没有改变。
我创建了一个jsfiddle,当我单击按钮时,我希望绑定(bind)的值会改变,但没有改变。
有什么帮助吗?
最佳答案
在 jQuery 中调用触发器(“click”)只会触发“click”事件处理程序。它实际上并不会导致复选框上的单击(从而改变选中状态) - 唯一一次执行类似操作是在元素具有与事件名称相同的函数属性的情况下(例如 form.submit()
- 但没有 checkbox.click()
)。
但是既然你使用的是 knockout ,你不妨这样做:
var viewModel = {
IsSelected: ko.observable(false) // Initially false
};
ko.applyBindings(viewModel);
$('#buttonInput').click(function(){
viewModel.IsSelected(true); // <-------
// Or, in order to toggle:
// viewModel.IsSelected(!viewModel.IsSelected());
});
这就是首先使用 knockout 的要点。在 View 模型而不是 View 上进行更改。由于复选框的 checked
属性是绑定(bind)到 IsSelected
的数据,因此更改 IsSelected
将更改复选框的 checked
属性。
关于jquery - knockout 中的复选框绑定(bind)不适用于触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9091195/