首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下拉菜单的jQuery切换功能有问题

下拉菜单的jQuery切换功能有问题
EN

Stack Overflow用户
提问于 2012-07-30 05:46:24
回答 3查看 630关注 0票数 0

我有一个下拉菜单,当切换显示它的菜单项时,它会上下滑动。问题是,当我在菜单向下滑动后单击其中一个菜单项时,它被识别为切换,并且菜单向上滑动,而没有打开菜单项的链接。

HTML

代码语言:javascript
复制
<li class="dropdown">
            <a href="#">Carbohydrates, proteins &amp; fats</a>
            <ul>
                <li><a href="carbohydrates.php">Carbohydrates</a></li>
                <li><a href="proteins.php">Proteins</a></li>
                <li><a href="fats.php">Fats</a></li>
            </ul>
        </li>

dropdown脚本:

代码语言:javascript
复制
$(document).ready(function () {
    $('.dropdown').toggle(
        function () {
            //show its submenu
            $('ul', this).slideDown(300);
        },
        function () {
            //hide its submenu
            $('ul', this).slideUp(300);        
        }
    );

});

如果能帮上忙我将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-30 21:14:46

不幸的是,上面的答案对我来说都不起作用。不久之后,我找到了一个解决方案。

HTML

代码语言:javascript
复制
<li class="dropdown">
            <a class="disablelink" href="#">Carbohydrates, proteins &amp; fats</a>
            <ul class="sub_navigation">
                <li><a href="carbohydrates.php">Carbohydrates</a></li>
                <li><a href="proteins.php">Proteins</a></li>
                <li><a href="fats.php">Fats</a></li>
            </ul>
        </li>

jquery脚本

代码语言:javascript
复制
$(document).ready(function() {
        $('.dropdown').click(function() {
                        // When the event is triggered, grab the current element 'this' and
                        // find it's children '.sub_navigation' and display/hide them
            $(this).find('.sub_navigation').slideToggle(); 
        });

        $(".disablelink").click(function(e) {
            e.preventDefault();
        });

    });

这个解决方案对我来说非常有效。我添加了e.preventDefault();来阻止页面在我点击链接时上下跳跃。

票数 0
EN

Stack Overflow用户

发布于 2012-07-30 05:52:27

为什么要单独关闭/打开菜单项?无论如何,当父<li>元素被隐藏时,所有内容都会被隐藏--为什么还要在那之后做任何事情呢?

我认为你想要disable event bubbling

编辑1:你把事情搞得太复杂了。试试这个:

代码语言:javascript
复制
$(document).ready(function () {
    $('.dropdown').toggle();
});

编辑2:你能更具体地说明你想要什么吗?如果您希望在单击某个特定元素时控制特定列表的运动,请尝试执行以下操作:

代码语言:javascript
复制
$(document).ready(function () {
    $('a.someLink').click(function() {
       $('.dropdown').toggle();
    });
});
票数 0
EN

Stack Overflow用户

发布于 2012-07-30 05:58:19

尝试将触发链接移动到下拉项之外

代码语言:javascript
复制
<a href="#" class="dropdown">Carbohydrates, proteins &amp; fats</a>
<div class="divdropdown">
   <ul>
       <li><a href="carbohydrates.php">Carbohydrates</a></li>
       <li><a href="proteins.php">Proteins</a></li>
       <li><a href="fats.php">Fats</a></li>
   </ul>
</div>​

然后稍微修改一下jquery

代码语言:javascript
复制
$(document).ready(function () {
    $('.dropdown').toggle(
        function () {
            //show its submenu
            $('ul', $(".divdropdown")).slideDown(300);
        },
        function () {
            //hide its submenu
            $('ul', $(".divdropdown")).slideUp(300);        
        }
    );
});​
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11713223

复制
相关文章

相似问题

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