mthoutai

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
<ul id="tree">
										<s:iterator value="#application.topPrivilegeList">
											<li>
<input type="checkbox" name="privilegeIds" value="${id}" id="ck_${id}" onclick="doChecked(this)"
					    <s:property value="%{id in privilegeIds?

'checked':''}"/> /> <label for="ck_${id}"><span class="folder">${name}</span></label> <ul> <s:iterator value="children"> <li> <input type="checkbox" name="privilegeIds" value="${id}" id="ck_${id}" onclick="doChecked(this)" <s:property value="%{id in privilegeIds?'checked':''}"/> /> <label for="ck_${id}"><span class="folder">${name}</span></label> <ul> <s:iterator value="children"> <li> <input type="checkbox" name="privilegeIds" value="${id}" id="ck_${id}" onclick="doChecked(this)" <s:property value="%{id in privilegeIds?

'checked':''}"/> /> <label for="ck_${id}"><span class="folder">${name}</span></label> </li> </s:iterator> </ul> </li> </s:iterator> </ul> </li> </s:iterator> </ul>

取消/选中上下级 尾随变化的js

 <script type="text/javascript">
        	$("#tree").treeview();
        </script>
        
  <script type="text/javascript">
	function doChecked(inp){
		
		// 当选中或取消一个权限时,也同一时候选中或取消全部的下级权限
		var boo=$(inp).attr("checked");
		/* alert(boo); */
		$(inp).siblings("ul").find("input").attr("checked", boo);
		
		// 当选中一个权限时,也要选中全部的直接上级权限
		if(inp.checked == true){
			$(inp).parents("li").children("input").attr("checked", true);
		}else{
			// 假设当前是取消选中,而且同级中没有被选中的项,则也取消上级的选中状态
			var jCheckedSibingCB = $(inp).parent("li").siblings("li").children("input[type=checkbox]:checked");
			
			if(jCheckedSibingCB.size() == 0){
				
				var jCheckboxInput = $(inp).parent().parent("ul").prev("label").prev("input[type=checkbox]");
				jCheckboxInput.attr("checked", 0);
				 
				// 递归操作每一层直属上级
				var jParentLi = jCheckboxInput.parent("li");
				if(jParentLi.size() > 0){
					doChecked(jCheckboxInput);
				} 
			
			}}
		
	}


posted on 2017-05-12 14:18  mthoutai  阅读(252)  评论(0编辑  收藏  举报