Javascript 将复选框绑定到布尔变量

Javascript 将复选框绑定到布尔变量,javascript,jquery,variables,checkbox,boolean,Javascript,Jquery,Variables,Checkbox,Boolean,我的页面上有很多复选框,每个复选框都与JavaScript代码中的某个变量相对应。目前,我对每个复选框都有这样的代码: $("#checkbox_var1").click(function() { Settings.var1 = $(this).checked(); }); 我想知道是否可以在元素中存储对变量的引用(可能使用data()),这样就足以将复选框绑定到布尔变量。我当前的代码变得相当长,因为我有相当多的复选框 那么,是否可以将复选框直接绑定到布尔变量?或者有一种将元素的值绑定

我的页面上有很多复选框,每个复选框都与JavaScript代码中的某个变量相对应。目前,我对每个复选框都有这样的代码:

$("#checkbox_var1").click(function() {
    Settings.var1 = $(this).checked();
});
我想知道是否可以在元素中存储对变量的引用(可能使用
data()
),这样就足以将复选框绑定到布尔变量。我当前的代码变得相当长,因为我有相当多的复选框


那么,是否可以将复选框直接绑定到布尔变量?或者有一种将元素的值绑定到变量的通用方法吗?

您可以对多个复选框使用相同的事件处理程序,使用元素的id连接设置对象上的两个复选框,如下所示:

function checkListener (evt) {
    var id = this.id.substr(9);
    Settings[id] = $("#" + this.id + ":checked").length > 0;
}
假设您按照相同的约定命名应用程序中的所有相关复选框,则应相应地调整子字符串函数。然后,要同时应用多个复选框,您可以按照以下方式执行操作:

$(":checkbox[id*='checkbox']").click(checkListener);

这将转换为:“对于checkbox类型的所有输入元素,其id包含“checkbox”。这样,只需几行代码就可以处理多个复选框。

您可能需要签出knockoutjs()。它可能会满足您将对象绑定到DOM元素状态的需要。然而,对于你的情况来说,这可能是过分的。这看起来确实很有趣,但在我的情况下,它实际上会变得更复杂。一个完整的额外图书馆不是很有效率。这是一个巧妙的方法,非常感谢。我忘了您也可以使用
[]
访问对象的属性,这样您就可以设置一个由变量定义名称的属性。