jQuery在多级列表中添加和删除类

jQuery在多级列表中添加和删除类,jquery,html,list,multi-level,Jquery,Html,List,Multi Level,这是一个具有两个级别的列表菜单 <ul id="mylist"> <li class="lv1"><a class="privateMenuLinkJS">el1.1</a></li> <li class="lv1"><a>el1.2</a> <ul> <li class="lv2"><a class="privateMenuLinkJS"&g

这是一个具有两个级别的列表菜单

<ul id="mylist">
  <li class="lv1"><a class="privateMenuLinkJS">el1.1</a></li>
  <li class="lv1"><a>el1.2</a>
    <ul>
      <li class="lv2"><a class="privateMenuLinkJS">el1.2.1</a></li>
      <li class="lv2"><a class="privateMenuLinkJS">el1.2.2</a></li>
      <li class="lv2"><a class="privateMenuLinkJS">el1.2.3</a></li>
    </ul>
  </li>
  <li class="lv1"><a class="privateMenuLinkJS">el1.3</a></li>
</ul>
    但它不适合我的需要

    我试过parents,我试过每一个,但似乎每个都没有通过list元素循环

    这是我迄今为止创建的代码

    我知道算法可能会更好


    你知道怎么做吗?

    我想你把它复杂化了。单击即可从所有
    li
    s中删除活动类,并应用于父级
    .lv1

    例如:


    (更新)

    尝试使用jQuery:

    这将允许您按类遍历祖先(查找父母或祖父母)

    以下代码将删除每个列表项的活动类,然后将活动类添加到最近的“lv1”列表项中

    $('.lv1').removeClass("active");
    $(this).closest('.lv1').addClass("active");
    

    看看这把小提琴:

    嗨,穆布,我想我必须对代码做一点修改。如果我点击任何2级元素,它们都会变成红色。应该只有他们的祖父母李。他们都变红了,因为他们继承了父母的风格。也就是说,如果你说一个
    li
    是绿色的,那么该
    li
    的所有子项也将是绿色的。您应该确保
    ul
    s已定义颜色。看。嗨,埃里克贝尔,我试过最接近,但如果我点击任何2级元素,它们都会变成红色。应该只有他们的祖父母李。
    $('.lv1').removeClass("active");
    $(this).closest('.lv1').addClass("active");