Let the storm money come!

Treeview 父子节点选中的级联操作

      选中父节点,同时选中子节点。 选中子节点,自动勾选上父节点,当所有的子节点都没有选中的时候,又自动取消父节点的勾选。

 

复制代码
代码
   <script src="http://www.cnblogs.com/js/jquery-1.4.2.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        $(document).ready(Bind);
        
function Bind() {
            BindTreeView(
"tvMenu"truetrue);
        }
        
function BindTreeView(treeViewId,selectChild,selectParent) {

            $(
"#" + treeViewId + " input").click(function() {
                
if (selectChild) {
                    
var divItem = $(this).parent().parent().parent().parent().next();
                    
if (divItem[0!= null){ // 屏蔽选最后一个时,会弹出错误的漏洞
                        if (divItem[0].tagName == "DIV")
                            divItem.find(
"input").attr("checked", $(this).get(0).checked); 
                    }
                }
                
if (selectParent) {
                    SelectParentNode(treeViewId, $(
this));
                }
            });
        }

        
function SelectParentNode(treeViewId,node) {
            
if (node.get(0!= null ){
                
if (node.get(0).checked == true) {
                    
var pdiv = node.parent().parent().parent().parent().parent();
                    
if (pdiv.get(0).id != treeViewId) {
                        
                        pdiv.prev().find(
"input").attr("checked", node.get(0).checked);

                        SelectParentNode(treeViewId, pdiv.prev().find(
"input"));
                    }
                } 
else { // 取消所有子的选择,父节点也取消
                    var pdiv = node.parent().parent().parent().parent().parent();
                    
if (pdiv.get(0).id != treeViewId) {

                        
var divItem = node.parent().parent().parent().parent().parent();
                        
if (divItem[0!= null) {
                            
if (divItem[0].tagName == "DIV") {
                                
if (divItem.find("input[type='checkbox']:checked").size() == 0 ) {
                                    pdiv.prev().find(
"input").attr("checked"false);
                                }
                            }
                        }

                        SelectParentNode(treeViewId, pdiv.prev().find(
"input"));
                    }
                }
            }
        }
    
</script>
复制代码

 

 

posted @   精密~顽石  阅读(486)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
< 2010年3月 >
28 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 1 2 3
4 5 6 7 8 9 10
在通往地狱的路上,加班能使你更快到达。
点击右上角即可分享
微信分享提示