1

ネストされた ul li ツリーを作成しました。各liノードの前にラジオまたはチェックボックスコントロールが必要です。そのために、私はclass="single/multiple"各liを持っています。これで、すべてのliをスキャンしてラジオまたはチェックボックスコントロールを追加するjqueryネスト関数を作成しました。正常に動作しています。

Jクエリ:

var count = 0;
$(function(){
    AddCBRadNodes($("#tree").children("ul"));
});


function AddCBRadNodes(node) {
    count = count+1;
    $(node).children("li").each(function() {
        if($(this).hasClass("single")) {
            $(this).prepend("<span><input type='radio' name='rad_"+count+"' /></span>");
        }
        else if($(this).hasClass("multiple")) {
            $(this).prepend("<span><input type='checkbox' name='cb_"+count+"' /></span>");
        }

        //Nesting here
        if($(this).children("ul").children("li").size() > 0) {
            AddCBRadNodes($(this).children("ul"));
        }
    });
}​

フィドルはこちら - http://jsfiddle.net/ashwyn/Y46Dw/1/

私ができないことは、li レベルごとに固有の名前が必要なことです。たとえば。A1、A2、A3 は同じ名前にする必要がありますが、他の li とは異なる名前にする必要があります。firebug でコントロールを分析すると、現在の jquery が 、 、および に割り当てられているrad_1ことがわかります。それは私が必死に助けを必要としている論理的な問題です. 前もって感謝します。P1rad_6P2P3

4

3 に答える 3

1

count変数を再帰関数の範囲外に移動します

countそして、再帰呼び出しの前にインクリメントします

http://jsfiddle.net/Y46Dw/10/

編集...

同じレベルで同じ名前を維持するには -

countそれをパラメータとして関数に渡すとどうなるでしょうか?

このような....

http://jsfiddle.net/Y46Dw/13/

于 2012-07-19T11:27:17.593 に答える
0

ラジオのみを表示するようにjqueryを簡略化しました。

これが作業中のフィドルです。

http://jsfiddle.net/ashwyn/Y46Dw/14/

以前の兄弟がいる場合は、名前をコピーするか、カウントを増やしました。

于 2012-07-19T11:52:53.253 に答える
0

いつ、何をしているのかに常に注意を払ってください。
動く

var count = 0;

コードの最初の行に

count = count+1;

中身

 $(node).children("li").each(function() {

他のことを行う前に初期値を設定し、何かを行うたびに値を増やす必要があります。

于 2012-07-19T10:55:44.413 に答える