0

1 つのチェックボックスが複数のネストされた 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

あなたは単にこれを試すことができます

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

ここで #theId は、チェックボックスが存在する分割を参照しています。

于 2013-01-18T11:32:31.807 に答える
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);

ここで示したコードでは追加しなかった正しいidandを入力タグに追加すれば、機能します。class

ただし、これは要素を選択する方法としてはひどいものです (正直なところ、要素をネストする方法としては非常に奇妙な方法です)。たとえば、inputタグに意味のある id を付けて、 などで選択すると、はるかに簡単になります$("#my_input")

できない場合でも、通常、これらすべてのセレクターをカスケードする必要はありません。

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

同じ結果が得られます。

于 2013-01-18T11:26:30.600 に答える