** append()之后,“ checked”属性似乎不起作用

时间:2019-08-30 10:46:16

标签: javascript jquery html

我有一个脚本,每个组附加一个复选框和标签。如果开始的组太多,则默认情况下会禁用它们。因此,如果启用了该组,则脚本会创建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。

您知道问题是什么吗? 谢谢

1 个答案:

答案 0 :(得分:0)

对不起,我发现了问题。我在事件上添加了两个额外的()。页面加载时被叫他。 if (this.button_none) this.button_none.click(this.deselectAll()); 成为 if (this.button_none) this.button_none.click(this.deselectAll);