43zTree - checkbox / radio 共存

简介: 43zTree - checkbox / radio 共存

效果图:

代码:

<!DOCTYPE html>
<HTML>
<HEAD>
  <TITLE> ZTREE DEMO - checkbox & radio</TITLE>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" href="../../../css/demo.css" type="text/css">
  <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
  <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>
  <!--  <script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script>
    <script type="text/javascript" src="../../../js/jquery.ztree.exedit.js"></script>-->
  <SCRIPT type="text/javascript">
    <!--
    var IDMark_A = "_a";
    var setting = {
      view: {
        addDiyDom: addDiyDom
      },
      data: {
        simpleData: {
          enable: true
        }
      }
    };
    var zNodes =[
      { id:1, pId:0, name:"父节点 1", open:true},
      { id:11, pId:1, name:"叶子节点 1-1"},
      { id:12, pId:1, name:"叶子节点 1-2"},
      { id:13, pId:1, name:"叶子节点 1-3"},
      { id:2, pId:0, name:"父节点 2", open:true},
      { id:21, pId:2, name:"叶子节点 2-1"},
      { id:22, pId:2, name:"叶子节点 2-2"},
      { id:23, pId:2, name:"叶子节点 2-3"},
      { id:3, pId:0, name:"父节点 3", open:true},
      { id:31, pId:3, name:"叶子节点 3-1"},
      { id:32, pId:3, name:"叶子节点 3-2"},
      { id:33, pId:3, name:"叶子节点 3-3"}
    ];
    function addDiyDom(treeId, treeNode) {
      var aObj = $("#" + treeNode.tId + IDMark_A);
      if (treeNode.level == 0) {
        var editStr = "<input type='checkbox' class='checkboxBtn' id='checkbox_" +treeNode.id+ "' onfocus='this.blur();'></input>";
        aObj.before(editStr);
        var btn = $("#checkbox_"+treeNode.id);
      if (btn) btn.bind("change", function() {checkAccessories(treeNode, btn);});
      } else if (treeNode.level == 1) {
        var editStr = "<input type='radio' class='radioBtn' id='radio_" +treeNode.id+ "' name='radio_"+treeNode.getParentNode().id+"' onfocus='this.blur();'></input>";
        aObj.before(editStr);
        var btn = $("#radio_"+treeNode.id);
        if (btn) btn.bind("click", function() {checkBrand(treeNode, btn);});
      }
    }
    function checkAccessories(treeNode, btn) {
      var checkedRadio = getCheckedRadio("radio_"+treeNode.id);
      if (btn.attr("checked")) {
        if (!checkedRadio) {
          $("#radio_" + treeNode.children[0].id).attr("checked", true);
        }
      } else {
        checkedRadio.attr("checked", false);
      }
    }
    function checkBrand(treeNode, btn) {
      if (btn.attr("checked")) {
        var pObj = $("#checkbox_" + treeNode.getParentNode().id);
        if (!pObj.attr("checked")) {
          pObj.attr("checked", true);
        }
      }
    }
    function getCheckedRadio(radioName) {
      var r = document.getElementsByName(radioName);
      for(var i=0; i<r.length; i++)    {
        if(r[i].checked)    {
          return $(r[i]);
        }
      }
      return null;
    }
    $(document).ready(function(){
      $.fn.zTree.init($("#treeDemo"), setting, zNodes);
    });
    //-->
  </SCRIPT>
  <style type="text/css">
    .radioBtn {height: 16px;vertical-align: middle;}
    .checkboxBtn {vertical-align: middle;margin-right: 2px;}
    </style>
 </HEAD>
<BODY>
<h1>checkbox / radio 共存</h1>
<h6>[ 文件路径: super/checkbox_radio.html ]</h6>
<div class="content_wrap">
  <div class="zTreeDemoBackground left">
    <ul id="treeDemo" class="ztree"></ul>
  </div>
  <div class="right">
    <ul class="info">
      <li class="title"><h2>实现方法说明</h2>
        <ul class="list">
        <li>zTree 默认的 checkbox 和 radio 是无法共存的,但可以利用 自定义控件 的功能实现此需求,具体需求可以参考 "添加 自定义控件" 的详细说明</li>
        <li class="highlight_red">对于 checkbox / radio 的联动规则,请根据需求制定自己的规则</li>
        </ul>
      </li>
    </ul>
  </div>
</div>
</BODY>
</HTML>
目录
相关文章
|
9月前
|
存储 测试技术 虚拟化
VMmark 4.0.3 - 虚拟化平台基准测试
VMmark 4.0.3 - 虚拟化平台基准测试
258 0
VMmark 4.0.3 - 虚拟化平台基准测试
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
735 4
Golang语言之管道channel快速入门篇
|
8月前
|
敏捷开发 运维 项目管理
Jira低成本国产方案大揭秘:2025年最值得选择的国产替代产品
随着企业对成本控制和数据合规性需求的提升,Jira项目管理工具的高昂费用和本土化不足问题日益凸显。本文对比分析了2025年主流国产替代方案(飞书项目、板栗看板、Ones等)的核心功能与适用场景,指出国产工具在中文化支持、私有化部署和成本效益方面的优势,并提供了从Jira平稳迁移的实施建议。数据显示,国产替代方案可降低80%成本,同时满足敏捷开发需求,特别适合预算有限且重视数据安全的中小企业。选择时需综合考量功能匹配度、团队适配性和迁移成本等因素。
538 0
|
10月前
|
人工智能 小程序 数据安全/隐私保护
如何免费生成文件二维码
草料二维码的文件二维码,免费即可生成,不限存储空间,二维码长期有效,生码个数和扫描次数都没有限制
|
人工智能 测试技术
Valley:字节跳动开源小体积的多模态模型,在小于 10B 参数的模型中排名第二
Valley 是字节跳动推出的多模态大模型,能够处理文本、图像和视频数据,在电子商务和短视频领域表现优异,并在 OpenCompass 测试中排名第二。
723 10
Valley:字节跳动开源小体积的多模态模型,在小于 10B 参数的模型中排名第二
|
机器学习/深度学习 人工智能 自然语言处理
转载:【AI系统】AI的领域、场景与行业应用
本文概述了AI的历史、现状及发展趋势,探讨了AI在计算机视觉、自然语言处理、语音识别等领域的应用,以及在金融、医疗、教育、互联网等行业中的实践案例。随着技术进步,AI模型正从单一走向多样化,从小规模到大规模分布式训练,企业级AI系统设计面临更多挑战,同时也带来了新的研究与工程实践机遇。文中强调了AI基础设施的重要性,并鼓励读者深入了解AI系统的设计原则与研究方法,共同推动AI技术的发展。
转载:【AI系统】AI的领域、场景与行业应用
|
存储 SQL 关系型数据库
PolarDB-X 存储引擎核心技术 | Lizard 多级闪回
本文介绍了数据库闪回技术,这是一种允许用户恢复到过去某个时间点状态的功能,无需依赖传统备份。闪回技术在误操作修复、数据恢复演练、问题诊断及合规审计等场景下尤为重要。
780 54
|
存储 弹性计算 监控
阿里云ECS健康状态产品详解
详细介绍阿里云ECS健康状态的功能和使用案例
|
传感器 人工智能 智能硬件
基于树莓派4B的智能家居系统设计-1
基于树莓派4B的智能家居系统设计
基于树莓派4B的智能家居系统设计-1
|
JavaScript 前端开发 编译器
TypeScript,从0到入门带你进入类型的世界
该文章提供了TypeScript的入门指南,从安装配置到基础语法,再到高级特性如泛型、接口等的使用,帮助初学者快速掌握TypeScript的基本用法。

热门文章

最新文章