0

感谢您的帮助...我正在用 javascript 创建一系列 html 元素,包括复选框。我想继续并默认标记其中一个复选框。我无法使用纯 javascript (checkbox.checked = true;) 或 jquery 库(见下文)获得“已检查”属性。看看我的例子,谢谢 - 编辑:纯 jQuery 解决方案确实有效,但我在使用 javascript 解决方案时遇到了问题。随后的复选框元素似乎抑制了先前复选框的“已检查”属性。有关示例,请参见此小提琴...小提琴示例

function createToolbarElements(){
        //------topbar-------------
        var topbar = document.getElementById("topbar");
        topbar.innerHTML = "ZONE: ";

        //zone set
        ART.regions.unshift("All");
        ART.regions.push("osj");
        var numRegions = ART.regions.length;
        var region;
        for(i=0; i<numRegions; i+=1){
            region = ART.regions[i];
            var checkbox = document.createElement("input");
            checkbox.type = "checkbox";
            checkbox.name = region;
            checkbox.value = region;
            checkbox.id = "zone"+region;
            if(region === "All"){
                $("#zoneAll").prop("checked", true);
            }
            topbar.appendChild(checkbox);
            var label = document.createElement('label')
            label.htmlFor = region;
            label.appendChild(document.createTextNode(region));
            topbar.appendChild(label);
        }
}

这是HTML:

    <div id="topbar" style="z-index: 2; position:absolute; height: 24px; padding: 4px;
    background-color: #DDD; color:#111;  font-family:'Trebuchet MS', Arial, Helvetica, sans-serif; 
    font-size:10pt; line-height:1.2">
    </div>
4

3 回答 3

1

用这个:

$("#zoneAll").prop("checked", true);

确保您的选择器有效。我假设您正在尝试按 ID 选择zoneAll,在这种情况下您需要使用$('#zoneAll'). 如果您的节点在 HTML 中看起来像这样,这将起作用:

<input type="checkbox" id="zoneAll"></input>

编辑:我最初说使用attr(),这是非常糟糕的错误。经过一番Google-Fu,prop()确实是要走的路。

于 2013-09-27T17:40:29.007 回答
1

您需要#通过 选择一个元素id

$("#zoneAll")
于 2013-09-27T17:41:46.633 回答
1

为什么不坚持使用 jQuery,因为无论如何你都在使用它:

function createToolbarElements(){
        $('#topbar').html('ZONE: ');

        ART.regions.unshift('All');
        ART.regions.push('osj');

    var numRegions = ART.regions.length,
        region     = null;

    for(i=0; i<numRegions; i++){
        region = ART.regions[i];

        $('<input />', {
            type : 'checkbox',
            name : region,
            value: region,
            id   : 'zone' + region,
            checked: region == 'All'
        }).appendTo('#topbar');

        $('<label />', {
            'for': 'zone' + region,
            text : region
        }).appendTo('#topbar');
    }
}

小提琴

或者根本不使用 jQuery,只需执行以下操作:

checkbox.checked = region === "All";

请注意,您尝试从 DOM 中获取的元素$("#zoneAll")实际上是在您尝试获取它之后附加到 DOM 中的,因此这样做总是会失败,因为当您尝试获取该元素时该元素不存在访问它。

于 2013-09-27T17:46:58.500 回答