我创建了一个嵌套的ul li树。我希望每个li节点之前有一个收音机或复选框控件。为此我每个李有一个class="single/multiple"
。现在我创建了一个jquery嵌套函数,它扫描所有的li并附加一个radio或一个checkbox控件。它工作正常。
JQUERY:
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
分配给P1
,rad_6
分配给P2
和P3
。这是我迫切需要帮助的逻辑问题。提前谢谢。
答案 0 :(得分:1)
将count
变量移出递归函数的范围
在递归调用之前递增count
修改... 强>
要在同一级别保持相同的名称 -
如果您将count
作为参数传递给函数,该怎么办?
喜欢这个......
答案 1 :(得分:0)
始终注意你做什么和什么时候 移动
var count = 0;
到代码的第一行 和
count = count+1;
里面
$(node).children("li").each(function() {
您需要在执行任何其他操作之前设置初始值,并在每次使用它时增加它。
答案 2 :(得分:0)