2015-11-04 53 views
0

乡亲们!JavaScript复选框树 - 儿童自动检查

我有一个豆蔻问题,这是这种情况: Tree View

我让对“拉特”的基础上树创建。这意味着,Bereich ABC是lvl1,Test1.docx是lvl4等等。所以这是一个“假”的树。但我对每个对象都有这个lvl信息。 如果父母被点击,我必须选中复选框。这意味着,如果lvl3被点击(例如“Originale”),lvl4和lvl5也必须被检查。

你明白我的意思吗?但愿如此。但我无法让它工作。你有什么想法?

$('[class^=lvl]').click(function(){ 
 
\t \t 
 
\t \t \t var keepChecking = true; 
 
\t \t \t var currentElement = $(this); 
 
\t \t \t var clickedLevel = getLevel(currentElement); 
 
\t \t \t var checkValue = currentElement.is(':checked'); 
 

 
\t \t \t while (keepChecking) { 
 
\t \t \t \t 
 
\t \t \t \t currentElement.attr('checked' , checkValue); 
 
\t \t \t \t  \t \t \t 
 
\t \t \t \t // get next element 
 
\t \t \t \t currentElement = getNextCheckbox(currentElement); 
 
\t \t \t \t var currentLevel = getLevel(currentElement); 
 
\t \t \t \t keepChecking = (currentLevel > clickedLevel); 
 
\t \t \t } 
 
\t \t }); 
 
\t \t 
 
\t \t function getNextCheckbox(checkbox) { 
 
\t \t \t return checkbox.parent().parent().next().children(":first").children(":first"); 
 
\t \t } 
 
\t \t 
 
\t \t function getLevel(checkbox) { 
 
\t \t \t var currentClass = checkbox.attr('class'); 
 
\t \t \t var currentLvl = currentClass.substring(3, currentClass.length); 
 
\t \t \t return parseInt(currentLvl); 
 
\t \t \t 
 
\t \t }
\t <TD class="center"> 
 
\t \t <INPUT TYPE="checkbox" NAME="" class="lvl[LL_REPTAG=PFADLEVEL /] docCheck" VALUE="[LL_REPTAG=DataId /]"> 
 
\t </TD>

+0

好,如果你创建一个问题'小提琴'来处理它。尝试c用'jsFiddle'关注 –

回答

0

我改变你的JavaScript代码如下:

function getNextCheckbox(checkbox) { 
    return checkbox.parent().parent().next().children(":first").children(":first"); 
} 

function getLevel(checkbox) { 
    var currentClass = checkbox.attr('class'); 
    if (currentClass){ 
    var currentLvl = currentClass.substring(3, currentClass.length); 
    return parseInt(currentLvl); 
    }else{ 
    return false; 
    }  
} 

$('[class^=lvl]').click(function(){ 
    var currentElement = $(this); 
    var clickedLevel = getLevel(currentElement); 
    var checkValue = currentElement.is(':checked'); 
    nextElement = getNextCheckbox(currentElement);   
    while (getLevel(nextElement)>clickedLevel) { 
     currentElement=nextElement; 
     currentElement.prop('checked' , checkValue); 
     nextElement = getNextCheckbox(currentElement); 
    } 
}); 

你也可以用它在这里玩:https://jsfiddle.net/1r73vy7z/1/

享受:)

+0

非常感谢,它正在工作! :-) – user2320543