为了账号安全,请及时绑定邮箱和手机立即绑定

关于选定当前元素的直接祖先元素问题

<ul id="menu">
    <li id='1002'>根目录1
        <ul class="sub_menu" id='sub_1002' style="display:none">
            <li>子目录1-1</li>
            <li>子目录1-2</li>
        </ul>
    </li>
    <li id='1221'>根目录2
        <ul class="sub_menu" id='sub_1221' style="display:none">
            <li>子目录2-1</li>
            <li>子目录2-2</li>
        </ul>    
    </li>
    <li id='1232'>根目录3
        <ul class="sub_menu" id='sub_1232' style="display:none">
            <li class='current'>子目录3-1</li>
            <li>子目录3-2</li>
        </ul>
    </li>
</ul>

这是一个二级菜单,当前位置是根目录3下面的子目录3-1其属性为current,现在想选择当前子目录3-1所在的<ul>元素,将其取消隐藏;再选择当前子目录3-1所在的上一级目录“根目录3”的<li>元素,并添加其属性改为"menuon",我的代码如下:

<script>
    $(".sub_menu li[class='current']").parent().show();
    $(".sub_menu li[class='current']").parents().addClass("menuon");
</script>

结果是所有隐藏的二级目录全部显示出来了,根目录3也没有添加menuon属性。

请教各位,怎么样才能只选择当前元素的直接上级元素,而不是遍历所有上级同类元素。我想利用id来精确选择某一个上级元素,但是不知道怎么表达出来。

正在回答

1 回答

$(".current").parent(".sub_menu").show();

$(".current").parent("#1232").addClass("menuon");

0 回复 有任何疑惑可以回复我~
#1

a_yong 提问者

谢谢热心解答。不过$(".current").parent(".sub_menu").show()会将上一级所有class='sub_menu'的ul选择出来,$(".current").parent("#1232").addClass("menuon")能实现功能,但是后台代码中不能直接指定#1232这个id,因为id是个变量。 我后来找到一个方法,那就是用closest(),$(".current").closest(".sub_menu").show()就只是将当前所在的子菜单的上一级菜单显示出来。 感谢。
2016-04-14 回复 有任何疑惑可以回复我~
#2

a_yong 提问者

尽管没完全实现功能,还是采纳吧。
2016-04-14 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于选定当前元素的直接祖先元素问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信