function getcheck() { var o = window.event.srcElement; if (o.tagName == "INPUT" && o.type == "checkbox") //点击treeview的checkbox是触发 { var d = o.id; //获得当前checkbox的id; var e = d.replace("CheckBox", "Nodes"); //通过查看脚本信息,获得包含所有子节点div的id var div = window.document.getElementById(e); //获得div对象 if (div != null) //如果不为空则表示,存在子节点 { var check = div.getElementsByTagName("INPUT"); //获得div中所有的已input开始的标记 for (i = 0; i < check.length; i++) { if (check[i].type == "checkbox") //如果是checkbox { check[i].checked = o.checked; //字节点的状态和父节点的状态相同,即达到全选 } } } //处理父节点 var divid = o.parentElement.parentElement.parentElement.parentElement.parentElement; //子节点所在的div while (divid != null) { var id = divid.id.replace("Nodes", "CheckBox"); //获得根节点的id var checkbox = divid.getElementsByTagName("INPUT"); //获取所有子节点数 var s = 0; for (i = 0; i < checkbox.length; i++) { if (checkbox[i].checked) //判断有多少子节点被选中 { s++; } } if (s == checkbox.length) //如果全部选中 或者 选择的是另外一个根节点的子节点 , { // 则开始的根节点的状态仍然为选中状态 window.document.getElementById(id).checked = true; } else { //否则为没选中状态 window.document.getElementById(id).checked = false; } divid = window.document.getElementById(id).parentElement.parentElement.parentElement.parentElement.parentElement; } } } 其实我要的是这样的效果,但是好像js代码出问题了,麻烦你帮我看一下可以吗
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>第一个简单的jQuery程序</title>
<script language="javascript" type="text/javascript" src="../js/jquery-1.4.1.js"></script>
<script type="text/javascript" src="../js/jquery.treeview.js"></script><script type="text/javascript" src="../js/jquery.ui.widget.js"></script>
<script type="text/javascript" src="../js/jquery.ui.accordion.js"></script>
<link type="text/css" rel="stylesheet" href="../css/fristDiv.css" />
<link type="text/css" rel="stylesheet" href="../css/jquery.treeview.css" /> <script type="text/javascript">
$(document).ready(function(){
//$(".caidan").accordion({header:'.er'});
$(".cai").treeview({
collapsed: true,
animated: "medium",
CheckBoxes:true,
persist: "location"
}); $("li input[type='checkbox']").click(function(){
//alert($(this).attr("checked"));
$(this).parent().next("ul").find("input[type='checkbox']").attr("checked",$(this).attr("checked"));
});
}); </script>
</head>
<body><ul class="cai" style="float:left">
<li class="hmain" ><div class="er" style=" "><input type="checkbox" name="functionid"/>菜单1</div>
<ul><li class="san" ><input type="checkbox" name="functionid"/>菜单11</li class="san" ><li class="san" ><input type="checkbox" name="functionid"/>菜单12</li></ul>
</li>
<li class="hmain" ><div class="er" style=""><input type="checkbox" name="functionid"/>菜单2</div>
<ul><li class="san" ><input type="checkbox" name="functionid"/>菜单11</li><li class="san" ><input type="checkbox" name="functionid"/>菜单12</li></ul>
</li>
<li class="hmain" ><div class="er" style="">菜单2</div>
<ul><li class="san" >菜单11</li><li class="san" >菜单12</li></ul>
</li>
</ul>
</div>
</body>
</html>
$("li input[type='checkbox']").click(function(){
//alert($(this).attr("checked"));
$(this).parent().next("ul").find("input[type='checkbox']").attr("checked",$(this).attr("checked"));
});主要还是要看你的列表时怎么设计的。
var o = window.event.srcElement;
if (o.tagName == "INPUT" && o.type == "checkbox") //点击treeview的checkbox是触发
{
var d = o.id; //获得当前checkbox的id;
var e = d.replace("CheckBox", "Nodes"); //通过查看脚本信息,获得包含所有子节点div的id
var div = window.document.getElementById(e); //获得div对象
if (div != null) //如果不为空则表示,存在子节点
{
var check = div.getElementsByTagName("INPUT"); //获得div中所有的已input开始的标记
for (i = 0; i < check.length; i++) {
if (check[i].type == "checkbox") //如果是checkbox
{
check[i].checked = o.checked; //字节点的状态和父节点的状态相同,即达到全选
}
}
}
//处理父节点
var divid = o.parentElement.parentElement.parentElement.parentElement.parentElement; //子节点所在的div
while (divid != null) {
var id = divid.id.replace("Nodes", "CheckBox"); //获得根节点的id
var checkbox = divid.getElementsByTagName("INPUT"); //获取所有子节点数
var s = 0;
for (i = 0; i < checkbox.length; i++) {
if (checkbox[i].checked) //判断有多少子节点被选中
{
s++;
}
}
if (s == checkbox.length) //如果全部选中 或者 选择的是另外一个根节点的子节点 ,
{ // 则开始的根节点的状态仍然为选中状态
window.document.getElementById(id).checked = true;
}
else { //否则为没选中状态
window.document.getElementById(id).checked = false;
}
divid = window.document.getElementById(id).parentElement.parentElement.parentElement.parentElement.parentElement; }
}
}
其实我要的是这样的效果,但是好像js代码出问题了,麻烦你帮我看一下可以吗