首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery切换子菜单

问jQuery切换子菜单
EN

Stack Overflow用户
提问于 2014-10-07 12:24:10
回答 2查看 1.8K关注 0票数 0

我需要些帮助。我尝试使用jQuery创建一个切换子菜单。但是,子菜单只显示几秒钟,然后在单击父li时消失。

以下是代码:

代码语言:javascript
复制
<div class="menu">
    <ul>
    <li class="parent">
        <a href="">Hello</a>

        <ul class="submenu">
            <li>
                <a href="">Hello</a>
            </li>
            <li>
                <a href="">Hello</a>
            </li>
        </ul>
    </li>
    <li class="parent">
        <a href="">Hello</a>

        <ul class="submenu">
            <li>
                <a href="">Hello</a>
            </li>
            <li>
                <a href="">Hello</a>
            </li>
        </ul>
    </li>

    </ul>
</div>

这是jQuery代码

代码语言:javascript
复制
$(function() {
  $(".submenu").hide();

  $(".parent").click(function(){
  $(".submenu").toggle()
});
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-07 12:25:36

对当前选定的元素使用this,并对dom中的特定类使用find

代码语言:javascript
复制
$(function () {
    $(".submenu").hide();
        $(".parent").click(function (e) {
        e.preventDefault(); // If you need to stop default action 
        $(".submenu", this).toggle(); // OR $(this).find(".submenu").toggle(); 
      });
});

演示

试着按你的要求发表评论

代码语言:javascript
复制
$(function () {
    $(".submenu").hide();
    $(".parent").click(function (e) {
        e.preventDefault();
        if (!$(e.target).closest("ul").is(".submenu")) {
            $(".submenu", this).toggle();
        }
    });
});

演示

代码语言:javascript
复制
$(function () {
    $(".submenu").hide();
    $(".parent").click(function (e) {
        e.preventDefault();
        if (!$(e.target).closest("ul").is(".submenu")) {
            $(".submenu", this).toggle();
            $(this).siblings(".parent").find(".submenu").hide();
        }
    });
});

新演示

票数 1
EN

Stack Overflow用户

发布于 2014-10-07 12:25:15

尝试将其作为上下文传递给选择器,

代码语言:javascript
复制
$(function () {
    $(".submenu").hide();
    $(".parent").click(function (e) {
        $(".submenu:first", this).toggle();
        return false;
    });
});

在这种情况下,我们需要同时调用.preventDefault()和.stopPropagation()。因此,我建议您使用return false来执行这两个操作。

演示

代码语言:javascript
复制
$(function () {
    $(".parent a").click(function (e) {
        var elems = $(this).closest('li');
        if (elems.find('.submenu').length) {
            $(".submenu:first", elems).toggle();
        }
        return false;
    });
});

演示

对于新的需求,请使用下面的代码,

代码语言:javascript
复制
$(function () {
    $(".submenu").hide();
    $(".parent a").click(function (e) {
        var elems = $(this).closest('li');
        elems.siblings('li').find('ul').hide();
        if (elems.find('.submenu').length) {
            $(".submenu:first", elems).toggle();
        }
        return false;
    });
});

演示新

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26235928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档