我有一个脚本,每个组附加一个复选框和标签。如果开始的组太多,则默认情况下会禁用它们。因此,如果启用了该组,则脚本会创建n个复选框,并带有其属性(标签颜色等...)和 checked 属性。但是,即使启用了组,也不会选中复选框。我真的不明白。
这是我的剧本:
add: function() {
if (!this.groups_container_e) return;
if (!this.groups_container_d) return;
// Get groups.
var groups = N.groups.list;
var html_e = "";
var html_d = "";
for (var group in groups) {
if (!groups.hasOwnProperty(group)) continue;
if (group === "first_node") continue;
// Get properties.
var bg_color = Network.groups.groups[group].color.border;
var text_color = HUD.colors.darken(bg_color, 50);
var hover_color = HUD.colors.darken(bg_color, 10);
var checked = Network.groups.groups[group].enabled ? " checked" : "";
var el_class = checked ? "g-enabled" : "g-disabled";
var el = `<label class="n-group ${el_class}" for="group-${group}" style="background: ${bg_color}; color: ${text_color};" onmouseenter="this.style.background='${hover_color}';" onmouseleave="this.style.background='${bg_color}';">${group}` +
`<input id="group-${group}" type="checkbox"${checked}/>` +
'</label>';
// Add group
checked ? html_e += el : html_d += el;
}
// Append
this.groups_container_e.append(html_e);
this.groups_container_d.append(html_d);
},
我尝试在附加之前打印 el 。元素看起来像这样:
<label class="n-group g-enabled" for="group-ZI" style="background: #C37F00; color: #440000;" onmouseenter="this.style.background='#aa6600';" onmouseleave="this.style.background='#C37F00';">
ZI
<input id="group-ZI" type="checkbox" checked/>
</label>
我们可以看到已选中属性在这里。但是当页面加载时...
Here is a picture (I don't have enough reputation)
我使用console.log(this.groups_container_e.find(":checkbox"));
在父容器中获得每个复选框,并将其发送到控制台以查看其属性。每个复选框的 checked 属性为false,但 defaultChecked 为true。
您知道问题是什么吗? 谢谢
答案 0 :(得分:0)
对不起,我发现了问题。我在事件上添加了两个额外的()。页面加载时被叫他。
if (this.button_none) this.button_none.click(this.deselectAll());
成为
if (this.button_none) this.button_none.click(this.deselectAll);