Javascript 材料设计复选框更改不';行不通

Javascript 材料设计复选框更改不';行不通,javascript,jquery,checkbox,material-design,Javascript,Jquery,Checkbox,Material Design,我正在尝试动态地将复选框状态checked设置为false/true。 到目前为止,我得到的是: for(var i = 0; i < bookmakers.length; i++) { $('#' + bookmakers[i].id + '-checkbox').prop('checked', filters['bookmakers'][bookmakers[i].id]).change(); console.log($('#' + bookmakers[i].id +

我正在尝试动态地将复选框状态checked设置为false/true。 到目前为止,我得到的是:

for(var i = 0; i < bookmakers.length; i++) {
    $('#' + bookmakers[i].id + '-checkbox').prop('checked', filters['bookmakers'][bookmakers[i].id]).change();
    console.log($('#' + bookmakers[i].id + '-checkbox'));
}

更新视图。有什么想法吗?

有些浏览器不允许id以数字开头。特别是CSS不允许以数字开头的选择器。尝试将#1-checkbox更改为#checkbox-1

也许您应该编写一个JSFIDLE,以便我们可以查看和测试您的代码。同时,您是否尝试过使用Javascript设置复选框状态

document.getElementById('yourElemID').checked = true; // or false

解决这个问题有多种方法。我用过的一个例子是:

for(var i = 0; i < bookmakers.length; i++) {
    setCheckboxValue($('#' + bookmakers[i].id + '-checkbox'), filters['bookmakers'][bookmakers[i].id]);
}

这不是解决这个问题的最干净的方法。您可以在
$el.get(0)
DOM元素中找到
MaterialCheckbox
对象,并使用它的
check
uncheck
方法。

但是收受赌注者[i]。id不是数字,而是字符串筛选器数组包含什么?过滤器['bookmakers'][bookmakers[i].id]过滤器包含每个收受赌注者,如果选中或未选中此收受赌注者的复选框{true/false}我通过将父类更改为选中或无来解决它。您应该更新自己的答案,以便其他有类似问题的人可以更轻松地找到答案。很高兴你找到了办法。
document.getElementById('yourElemID').checked = true; // or false
for(var i = 0; i < bookmakers.length; i++) {
    setCheckboxValue($('#' + bookmakers[i].id + '-checkbox'), filters['bookmakers'][bookmakers[i].id]);
}
function setCheckboxValue($el, value) {
    var $parent = $el.prop('checked', value).parent();
    removeOrAddClass($parent, 'is-checked', value);
}