如果所有子节点都分配了类,则选择父节点

2024-03-02

我正在寻找一种有效的方法来遍历无序列表,该列表包含多个级别,其中包含类 .selected。如果组中的所有 UL LI 都具有 .selected 类,我需要将 .selected 类添加到子 UL 的父 LI 中。

<ul>
    <li>one <-- this li adds class .selected if ALL its children have .selected
        <ul>
            <li class="selected">red</li>
            <li class="selected">green</li>
            <li class="selected">blue</li>
        </ul>
    </li>
    <li>two
        <ul>
            <li class="selected">red</li>
            <li>green</li>
            <li class="selected">blue</li>
        </ul>
    </li>
    <li>three</li>
</ul>

如果任何给定 UL 中的所有子级都具有类 .selected,则将类 .selected 添加到父 LI,因此在这种情况下,包含文本“one”的 LI 将是唯一添加类 .selected 的父 LI。

我需要在页面加载时发生这种情况。我尝试了很多方法,但这个最接近,但我不太确定它是否最有效:

$("ul li").filter(function () {
    var lis_total = $(this).siblings().length + 1;
    var lis_selected = $(".selected", this).siblings().length + 1;
    if(lis_total == lis_selected)
        return $(this).parent("li").addClass("selected");
});

我不太确定我是否做得正确。它不起作用。


如果你想要单行,请尝试http://jsfiddle.net/4JNaL/ http://jsfiddle.net/4JNaL/

$('li ul:not(:has(li:not(.selected)))').parent().addClass('selected');

or

var theParent = $('li ul:not(:has(li:not(.selected)))').parent();

返回要操作的元素

对于任意深度的树:http://jsfiddle.net/GQbmU/4/ http://jsfiddle.net/GQbmU/4/

do {
    $results = $('li:not(.selected) > ul:not(:has(li:not(.selected)))');
    $results.parent().addClass('selected');
} while ( $results.length > 0);

或者,因为这个答案的主题是一句俏皮话:http://jsfiddle.net/GQbmU/6/ http://jsfiddle.net/GQbmU/6/

while ( $('li:not(.selected) > ul:not(:has(li:not(.selected)))').parent().addClass('selected').length > 0) {} ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果所有子节点都分配了类,则选择父节点 的相关文章

  • Socket.io 如何判断某人何时离开

    我正在使用 socket io 创建一个实时游戏 目前 当有人离开时 什么也不会发生 我想以某种方式通知服务器说谁离开了 有没有办法在用户离开时发出正确的信息 我可以让服务器每 1000 毫秒对每个人执行一次 ping 操作 或者通过其他方
  • 当 div 移动以填充其他淡出的 div 留下的空白空间时,如何为它们设置动画

    我有一组div 每个div对应一组类别 当我单击过滤器时 这将更改 div 的类 并根据这些类别使它们可见或隐藏 我控制 div 淡入 淡出的方式 它们做得缓慢而漂亮 但每次 div 消失时 保持不变的 div 会突然移动以填充隐藏的 di
  • 如何在 的每四个循环项之后添加

    我想在循环中的每第四个数字项之后退出循环 我想创建一个二十人的名单 在每一个tr应该是4个人 So I want to break from the loop after every 4th number of loop My one tr
  • 为什么 Bootstrap 需要 jQuery? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我已经多次用谷歌搜索这个问题 但从未找到满意的答案 大多数答案似乎只是说 是的 Bootstrap 插件确实需要 jQuery https st
  • 画廊自动播放幻灯片?

    有没有人找到一种简单的方法来让很棒的画廊自动播放 我真的被这个困住了 任何帮助都会很棒 Thx Paul 自动播放 真 在选项中应该可以解决问题 autoplay type Boolean or Number default false 如
  • c3js数据标签的位置

    有没有可能的方法来更改数据上方标签的位置c3条形图 在官方文档中 很好地解释了如何通过操作 y 和 x 整数来更改 x 和 y 测量轴上标签的位置 但我没有找到任何数据标签 我试图用简单的方式指出它d3其上c3是基于但是console lo
  • jQuery Mobile 数据过滤器,以防没有结果

    我目前正在探索 jQuery Mobile 以开发带有订单跟踪信息的移动版仪表板 计划是使用一个包含所有订单的简单无序列表 人们可以单击他们想了解更多信息的链接 由于此列表可能会变得相当大 因此拥有过滤功能非常好 使用 jQuery Mob
  • 如何清除画布中图像上的矩形

    我需要清除画布中图像上绘制的矩形 而不损坏现有图像 我可以绘制小矩形点并将其清除 但问题是 当我清除矩形时 它在图像上仍保留为白色小斑点 有人可以告诉我如何清除图像上的矩形而不损坏现有图像 我使用了以下方法来清除矩形 但没有用 1 cont
  • 动态 jquery 对话框弹出窗口

    我只使用过已知数量的 JQuery 对话框 并且在使动态版本正常工作时遇到了各种麻烦 希望有人能帮助我解决这个问题 这是我用已知数字执行此操作的方法 opener1 click function dialog1 dialog open di
  • SetInterval 函数不适用于 PHP 文件

    我有这样的index html
  • 聚合物在核心输入上使用功能验证

    有人可以解释一下如何使用函数验证吗这种聚合物元素 http www polymer project org docs elements core elements html core input 导航到 验证 部分
  • 是否可以获取绑定到 jQuery 元素的事件列表?

    正如问题所说 我需要绑定到特定元素的事件列表 我的意思是像单击 鼠标悬停等事件在 dom 加载时绑定到该元素 愚蠢 示例 element click function stuff element mouseover function stu
  • 调用 jQuery 超大插件 onclick

    我正在尝试调用超大插件 http buildinternet com 2009 02 supersized full screen backgroundslideshow jquery plugin http buildinternet c
  • 启用scrollX 时标题列与DataTable 不对齐

    我遇到了这个插件反复出现的问题 启用scrollX选项时 标题列未对齐 我尝试了在 stackoverflow 上阅读的许多解决方案 但没有成功 可能是插件版本的问题 但是 这是我的数据表设置 var oTable table dataTa
  • 从 JavaScript 加载图像

    在我的专辑幻灯片放映页面上 我有类似的代码 span style display none img src imageUrl span span show loader span in showImage 我确定图像已加载 因此我显示图像并
  • 将SQL数据引入jquery availabletag

    我正在尝试制作自动完成文本框 但如何将 SQL 数据包含到 jquery 可用标记并循环它 我无法根据以下代码执行该功能 任何帮助 将不胜感激 谢谢 这是我的预期输出 预期结果演示 http jsfiddle net VvETA 71 jq
  • iPhone 和 iPad 滚动结束

    我正在制作一些无限滚动的 jQuery 跨浏览器画廊 我工作得很好 但在 iPhone 上 我想也在 iPad 上 而不是相等的值 我有一些不成比例的值不匹配 window scrollTop document height window
  • jquery 中可点击 div 中的按钮

    我有整个 div 您可以单击它来切换该 div 的主要部分 问题是我在该 div 中也有可点击的按钮 当我点击它时 它会执行它应该做的事情 但同时也会切换整个 div 我怎样才能禁用它 Use event stopPropagation 单
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • 如何使用 jQuery 过滤 DropDownList 中的选项

    我有 2 个 DropDownList 第一个 DropDownList 有 4 个选项 第二个 DropDownList 有 20 个选项 我想要一个选项value 1在第一个 DropDownList 中选择我在第二个 DropDown

随机推荐