动态选中/取消选中树中的复选框

2024-02-16

我有一个类似的问题如果在 JQuery 中未选中所有子节点,则取消选中父节点 https://stackoverflow.com/questions/6556446/uncheck-parent-node-if-all-children-unchecked-in-jquery/6556519#6556519(使用此解决方案)并尝试对其进行修改,以便如果未选中父级(上面/下面未能做到这一点),则子级也将全部取消选中。

JSFiddle 对于上述内容(http://jsfiddle.net/fRxVs/ http://jsfiddle.net/fRxVs/)

jQuery.each(jQuery('#treeList ul li').find(':checkbox'),  function(){
    jQuery(this).change(function (){
        if (jQuery(this).is(':checked')) {
                      jQuery(this).parentsUntil('#treeList').siblings().filter('input:checkbox').attr('checked', true).trigger('change');
        }else{

            jQuery(this).parents('ul:first').siblings('input:checkbox').prop('checked', $(this).parent().siblings().children('input:checked').length).trigger('change');
        }        
    });    
});

虽然我不知道为什么,但我必须改变prop从最后一行到attr为了让它由于某种原因在本地正确地作为 JSFiddle 工作......

基本上我有一个 3 级设置:

Grand-Parent
- Parent
-- Child
  • If the grandparent被选中/取消选中,那么它的子项和孙子也应该全部被选中/取消选中。
  • If the parent被选中/取消选中,其子级及其父级也应被选中/取消选中。
  • If the children被检查,那么应该检查其父母和祖父母(如果没有检查孩子,则不应检查父母)。

我正在尝试将其更改为大陆、国家、地区 - 我想如果我只是这么说你就会理解......

Thanks


这是解决方案:Fiddle: http://jsfiddle.net/fRxVs/55/ http://jsfiddle.net/fRxVs/55/

$('#treeList :checkbox').change(function (){
    $(this).siblings('ul').find(':checkbox').prop('checked', this.checked);
    if (this.checked) {
        $(this).parentsUntil('#treeList', 'ul').siblings(':checkbox').prop('checked', true);
    } else {
        $(this).parentsUntil('#treeList', 'ul').each(function(){
            var $this = $(this);
            var childSelected = $this.find(':checkbox:checked').length;
            if (!childSelected) {
                $this.prev(':checkbox').prop('checked', false);
            }
        });
    }
});

修改及说明

  • $完全一样jQuery。使用时要保持一致:jQuery仅当您不确定是否可以使用$ === jQuery (is $覆盖?)。
  • :checkbox是一个匹配每个的选择器input[type="checkbox"]。指定已经过时了input:checbkox,因为复选框元素始终是输入元素。
  • .find(..)寻找匹配选择器的子元素(不一定是直接子元素)。"#treeList :checkbox"更快,并且具有等效的结果$('#treeList').find(':checkbox').
  • 当属性/方法/事件添加到 jQuery 对象时,所有与选择器匹配的元素都将被修改。因此,您不必单独循环每个元素:jQuery.each(jQuery('#treeList :checkbox'), function(){ jQuery(this).change(...)})可以缩短为jQuery('#treeList :checkbox').change(...).
  • 你不必触发change更改复选框检查状态后,因为该函数已经处理了完整的树。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态选中/取消选中树中的复选框 的相关文章

随机推荐

  • 如何在其他模态弹出窗口上方显示模态弹出窗口

    我有一个模态弹出窗口 当我单击模态弹出窗口中的按钮时 会显示另一个模态弹出窗口 但是第二个模态弹出窗口的一些内容隐藏在第一个模态弹出窗口后面 如何使其显示在第一个模式弹出窗口上方 任何想法和建议表示赞赏 尝试设置z index您想要的弹出包
  • Javascript:如何停止点击事件排队?

    以下代码工作正常 唯一的问题是单击事件排队 例如setTimeout每次点击都会被调用 并且弹出窗口会出现多次 如何使弹出窗口仅在用户单击时出现 并确保每个弹出窗口之间的间隔为 4 秒 var showpopup 1 var check t
  • 如何将ajax添加到wordpress主题

    我有一个问题困扰了我好几天了 我正在尝试使用一个简单的 ajaxPOST 函数将数据发送到 MySQL 数据库 不是 WP 数据库 该代码位于主题中的 single post php 内 因为必须在每次发布之前检查它 ajax url li
  • 检索 pdf 时出现意外的服务器响应 (0)

    我们在使用 Amazon ec2 实例时特别遇到此错误 aws实例上的配置是Tomcat 7 Ubuntu 16 04 内存是8GB 当用户尝试查看 pdf 文件时会发生这种情况 在我们的应用程序中 我们有一项功能 用户只能在浏览器上查看
  • jQuery Mobile 输入和文本区域自定义样式

    我正在尝试设计我的 jQuery Mobile 表单输入和文本区域的样式 现在他们是这样定制的 http jquerymobile com demos 1 0b1 demos 1 0b1 docs forms forms text html
  • 在谷歌大查询中将表从一个数据集复制到另一个数据集

    我打算将一组表从一个数据集复制到同一项目中的另一个数据集 我在 Ipython 笔记本中执行代码 我使用以下代码获取要复制到变量 value 中的表名列表 list bq DataSet test TestDataset for x in
  • Android:id列表视图

    我在 xml 中声明了一个列表视图
  • 每次 ComboBox 更改(使用 SelectedIndexChanged)时,如果打开,则以其他形式显示新值的消息

    我想从 Form1 组合框中获取所选语言 并启用其他表单来查看该语言 该组合框大约有 20 种语言 所以是的 您可以说相当多的语言 我有一个名为 ComboBoxLang SelectedIndexChanged 的 方法 当组合框中的语言
  • 设置 codeDOM 文件的文件版本

    我正在寻找任何方法来设置使用 codeDOM 生成的 exe 文件的文件版本 我的总是显示为 0 0 0 0 以编程方式显然是首选 但在这一点上 任何事情都比没有好 已编译程序集的版本由 AssemblyFileVersion 属性控制 您
  • Windows 中的 Git 符号链接

    我们的开发人员混合使用基于 Windows 和 Unix 的操作系统 因此 在 Unix 机器上创建的符号链接成为 Windows 开发人员的一个问题 在 Windows 中 MSysGit https github com msysgit
  • 无法使用 Vue.config.delimiters,只能在 new Vue() 上设置分隔符

    As per 这个答案 https stackoverflow com a 36530534 11236 我正在尝试设置Vue config delimiters 为了使用Vue与服务器端handlebars 当我只使用全局配置时 它没有任
  • 如何减小 openlayers 3 中图标的大小,我正在使用 bing 地图

    这是我的代码 var iconFeature new ol Feature geometry new ol geom Point ol proj transform 95 3698 29 7604 EPSG 4326 EPSG 3857 n
  • 计算行中最后一个单元格和下一个非空白单元格之间的空白单元格数量

    是否可以 最好使用公式 计算行中空白单元格的数量 其中计数从给定列开始并向后计数 例如从右到左 空白单元格的数量 直到找到非空白单元格 在下面的示例中 计数从 H 列开始并向左进行 使用COUNTA or COUNTIF似乎是合理的工具 但
  • Passport Laravel Rest API Auth 与正常设计

    I have Completely assigned the Passport REST API and i get token and tested on PostMan 并使用此 Auth 检索数据 这是带有 laravel Blade
  • Java Scanner 类读取字符串

    我得到以下代码 int nnames String names System out print How many names are you going to save Scanner in new Scanner System in n
  • 读取巨大的 .csv 文件

    我目前正在尝试从 Python 2 7 中的 csv 文件读取最多 100 万行和 200 列的数据 文件范围从 100mb 到 1 6gb 我可以对 300 000 行以下的文件执行此操作 非常缓慢 但是一旦超过该行数 就会出现内存错误
  • 如何更新 Git 克隆

    我已经开始使用 Git 我已在本地系统上克隆了该存储库 我在本地计算机上进行更改并使用git push更新远程仓库 效果很好 我有一个快速查询如何从远程更新我的克隆 我试过git remote update 它不起作用 没有出现新的变化 我
  • 为 iOS 应用程序提交开放图操作?

    对于 App Store 中尚不存在的 iOS 应用程序 当我提交 Facebook Open Graph Api 的操作时 我应该为 重现操作的步骤 编写什么 当您拥有这样的本机移动应用程序时 您可以提交应用程序流程的屏幕截图作为可接受的
  • 将文件读取为元组列表

    我想使用 Python 读取文本文件 我的清单必须是这样的 mylist 34 968398 6 487265 34 969448 6 488250 34 967364 6 492370 34 965735 6 582322 我的文本文件是
  • 动态选中/取消选中树中的复选框

    我有一个类似的问题如果在 JQuery 中未选中所有子节点 则取消选中父节点 https stackoverflow com questions 6556446 uncheck parent node if all children unc