0

我一直在尝试允许一个复选框检查多个嵌套 div 中的其他复选框,但它不起作用。我找不到复选框的 Dom 路径。这是html:

<div class="box span12 " id="Clarendon_region"> 

    <div class="box-content">
        <div class="row-fluid">         
            <div class="span3 ">
                <span>
                    <div class="checker">
                        <span>
                            <input type="checkbox">
                        </span>
                    </div>
                </span> Branch 115
            </div>
        </div>
    </div>

</div>

这是jQuery:

$('span input').click(function(e){

    var elIDSplit = e.target.id.split("_");

    if(elIDSplit[0] == "chk" && elIDSplit[2] == "region") {
        //alert(e.target.id);
        status = $(e.target).attr("checked");
        if (status == undefined) {
            status = false;
        }

        $(elIDSplit[1]+"_"+elIDSplit[0]+" .box-content .row-fluid .span3 span .checker span input:checkbox.friends").attr("checked",status);

    }

});     

更新:这是通过给输入一个类名然后使用这个来解决的:

$(".allbranches_" + elIDSplit[1]).attr('checked', status);
//does not work without this line since uniform is responsible for styling the  checkbox
$.uniform.update();
4

2 回答 2

0

您的代码中有各种错误。这一行:

$(elIDSplit[1]+"_"+elIDSplit[0]+" .box-content .row-fluid .span3 span .checker span input:checkbox.friends").attr("checked",status);

实际上应该是(用你的方法):

$("#" + elIDSplit[1]+"_"+elIDSplit[2]+">.box-content>.row-fluid>.span3>span>.checker>span>input:checkbox.friends").attr("checked", status);

它会起作用,前提是您将正确的id和添加class到您的输入标签中,而您在此处显示的代码中没有这样做。

然而,这是一种选择元素的糟糕方式(老实说,这是一种非常奇怪的嵌套方式)。input例如,如果您为标签提供有意义的 id并使用类似$("#my_input").

即使你不能,通常也不需要级联所有这些选择器:你可以这样做

$("#" + elIDSplit[1]+"_"+elIDSplit[2]+">.box-content input:checkbox.friends").attr("checked", status);

你会得到同样的结果。

于 2013-01-18T11:26:30.600 回答
0

你可以简单地试试这个

$('#theId').find(':checkbox').atrr('checked','checked');

这里 #theId 是指复选框所在的分区。

于 2013-01-18T11:32:31.807 回答