1

我创建了一个嵌套的 ul li 树。我想要每个 li 节点之前的收音机或复选框控件。为此,我class="single/multiple"每里都有一个。现在我创建了一个 jquery 嵌套函数,它扫描所有 li 并附加一个单选或复选框控件。它工作正常。

查询:

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_1P1rad_6和。这是我迫切需要帮助的逻辑问题。提前致谢。P2P3

4

3 回答 3

1

count变量向上移出递归函数的范围

count并在递归调用之前递增

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

编辑...

保持同名同级——

如果你把count它作为参数传递给函数怎么办?

像这样....

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

于 2012-07-19T11:27:17.593 回答
0

始终注意你在做什么和什么时候做。
移动

var count = 0;

到代码的第一行和

count = count+1;

里面

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

您需要在做任何其他事情之前设置初始值,并在每次使用它时增加它。

于 2012-07-19T10:55:44.413 回答
0

简化的 jquery 只显示收音机。

这是工作小提琴。

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

如果有以前的 li 兄弟,那么我复制了名称,否则我增加了计数。

于 2012-07-19T11:52:53.253 回答