javascript - jQuery 从 UL 层次结构中删除类,除了

标签 javascript jquery css

参见 fiddle :http://jsfiddle.net/3mpire/yTzGA/1/

使用 jQuery 如何从所有 LI 中删除“事件”类,除了离根最远(最深)的那个?

<div class="navpole">
    <ul>
        <li class="active"><a href="#">Lorem ipsum</a></li>
        <li><a href="#">Lorem ipsum</a>
            <ul>
                <li class="active"><a href="#">Lorem ipsum</a></li>
                <li><a href="#">Lorem ipsum</a></li>
                <li><a href="#">Lorem ipsum</a>
                     <ul>
                          <li class="active"><a href="#">Lorem ipsum</a></li>
                          <li><a href="#">Lorem ipsum</a></li>
                     </ul>
                </li>
                <li><a href="#">Lorem ipsum</a></li>
            </ul>
        </li>
        <li><a href="#">Lorem ipsum</a></li>
        <li><a href="#">Lorem ipsum</a></li>
    </ul>
</div>

这是期望的结果:

<div class="navpole">
    <ul>
        <li><a href="#">Lorem ipsum</a></li>
        <li><a href="#">Lorem ipsum</a>
            <ul>
                <li><a href="#">Lorem ipsum</a></li>
                <li><a href="#">Lorem ipsum</a></li>
                <li><a href="#">Lorem ipsum</a>
                     <ul>
                          <li class="active"><a href="#">Lorem ipsum</a></li>
                          <li><a href="#">Lorem ipsum</a></li>
                     </ul>
                </li>
                <li><a href="#">Lorem ipsum</a></li>
            </ul>
        </li>
        <li><a href="#">Lorem ipsum</a></li>
        <li><a href="#">Lorem ipsum</a></li>
    </ul>
</div>

最佳答案

按 parent 的数量对它们进行排序,并排除最后一个,因为无论标记如何,这将是嵌套最远的那个,并删除其余的类

$('.active').sort(function(a,b) {
    return $(a).parents().length > $(b).parents().length;
}).not(':last').removeClass('active');

FIDDLE

要为每个导航杆执行此操作,只需将其包装在 each()

$('.navpole').each(function() {
    $('.active', this).sort(function(a,b) {
        return $(a).parents().length > $(b).parents().length;
    }).not(':last').removeClass('active');
});

FIDDLE

关于javascript - jQuery 从 UL 层次结构中删除类,除了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21442330/

相关文章:

javascript - 内联 if 语句并返回

javascript - 无法更改 'on click' javascript 中的文本

javascript - 获取元素属性的最佳方法是什么?

javascript - 使用 jQuery/JavaScript 将元素向右浮动

html - 样式表未在 asp.net 主页中使用

javascript - 如何将提及标签文本转换为 <router-link> ? (VUEJS)

javascript - 为什么 ng-include 不工作?

带有 ui-state-error 的 JqueryUI 图标在对话框中不起作用

html - 页面的 Css 影响它的布局

html - 当最后一个路由字符没有/带有 '/' 时,Express 服务器分别加载带有/不带 css/js 的 html 页面