2015-11-04 48 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