jquery - knockout 中的复选框绑定(bind)不适用于触发事件

标签 jquery jquery-selectors knockout.js

当我尝试触发复选框的单击事件时,复选框数据绑定(bind)值没有改变。

我创建了一个jsfiddle,当我单击按钮时,我希望绑定(bind)的值会改变,但没有改变。

http://jsfiddle.net/2T9QZ/13/

有什么帮助吗?

最佳答案

在 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/

相关文章:

forms - 加载 HTML 对象客户端(表单)

javascript - 将 div 更改为绝对位置时,它会跳转到原始位置

javascript - 使用 jquery 插入动态 HTML 后单击不起作用

javascript - Jquery, javascript - 用括号按类选择元素

jquery - 非贪婪 jquery 选择器

jQuery 选择器喜怒无常

javascript - 将 js knockout 到 mysql 数据库,使动态值不起作用

javascript - 带有可观察参数的 Knockout 自定义验证

javascript - 如何使用 Jquery 创建单级面包屑

javascript - 简单的 jQuery 单击 slider