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

问响应jQuery菜单
EN

Stack Overflow用户
提问于 2012-12-19 01:35:24
回答 1查看 610关注 0票数 3

我已经创建了一个响应菜单,打破480 at及以下。在下列情况下,我有以下反应:

  1. 用户单击“菜单”链接。
  2. 菜单slideToggles出来了。
  3. 子菜单slideToggle out onClick也是。
  4. 但您不能单击任何页面。

这与返回假有关吗?

您可以在这里查看示例:http://www.stlredtails.com/construction/

您可能需要调整浏览器的大小,使浏览器位于或低于480 in,以查看响应导航的运行情况。

下面是导航的jQuery:

代码语言:javascript
复制
jQuery(".navigation ul").hide();
jQuery("#navigation").click(
    function() {
       jQuery(this).siblings("ul").slideToggle(150, "swing");
       return false;
    }
);
jQuery(".navigation > ul > li").click(
    function() {
       jQuery(this).children("ul").slideToggle(150, "swing");
       return false;
    }
);

谢谢大家!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-19 02:15:52

问题来自于return false。单击链接时,还单击祖先li和ul。在链接“激活”之前,绑定到祖先的函数单击事件执行。由于它们是return false,因此会防止默认的浏览器行为(导航离开)。

对于这种菜单行为,有更好的解决方案,但是使用您已经拥有的(并且假设您不会更改html),您可以简单地将以下内容添加到您的javascript中:

代码语言:javascript
复制
$('.navigation').on('click', 'a:only-child', function(e) {
    e.stopPropagation();
});

这将搜索导航菜单中的所有链接(在本例中,这些链接恰好是希望继续作为链接工作的链接),并防止祖先单击事件执行-- return false不应该再发生了。

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

https://stackoverflow.com/questions/13944334

复制
相关文章

相似问题

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