JavaScript复选框树 - 自动检查子项

时间:2015-11-04 07:24:11

标签: javascript jquery html checkbox input

人们!

我有一个小问题,这是情况: Tree View

我让树在“lvl”的基础上创建。这意味着,Bereich ABC是lvl1,Test1.docx是lvl4,依此类推。所以这是一个“假”树。但我只有每个对象的lvl信息。 如果单击父级,我必须选中复选框。这意味着,如果单击lvl3(例如“Originale”),则还必须检查lvl4和lvl5。

你明白我的意思吗?希望如此。但我不能让它发挥作用。你有什么想法?

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

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

1 个答案:

答案 0 :(得分: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/

享受:)