【问题标题】:Collapsing a jQuery accordion when clicking a link outside of the accordion menu单击手风琴菜单外的链接时折叠 jQuery 手风琴
【发布时间】:2012-07-24 18:11:05
【问题描述】:

我正在使用这里jQuery Vertical Accordion Menu Plugin 找到的这个jQuery 手风琴菜单。该插件运行良好,无需太多自定义。我真正寻找的这个插件提供的功能是页面刷新后的持久菜单状态。此插件使用 cookie 来完成此操作。解决问题...

如果您在手风琴菜单外单击,该状态仍将保持不变。当在手风琴菜单外单击链接时,我正在尝试找出一种折叠整个菜单的方法。

我的第一个想法是在 window.location 等于某个 URL 时找到某种方法来删除或重置状态保存 cookie 中的数据。 (目前如果返回首页时菜单完全折叠,我很高兴)。

我认为最好的解决方案是一些 jQuery,如果在 #Accordion-Navigation 之外点击了一个,它会重置 cookie 或折叠菜单。

我对任何事情都持开放态度。

我尝试了以下方法,但没有成功。

jQuery(document).ready(function(jQuery){
    var siteurl = "http://myhomepageurl.com/index.php";
if (window.location.href == siteurl) {
    jQuery.cookie('dcjq-accordion-1', null, { path: '/'});
    }
});

任何关于更优雅解决方案的建议将不胜感激!感谢您抽出宝贵时间提前查看!

【问题讨论】:

    标签: javascript jquery jquery-plugins session-cookies


    【解决方案1】:

    有一个技巧可以做到这一点,只需在你的 html 和 body 元素上绑定一个事件处理程序。 如果点击了手风琴,则停止传播,否则折叠手风琴。

    $(function () {
      $('html').on('click', collapseAccordion);
      $('body')
        .on('click','.accordion', function (e) { e.stopPropagation() });
    });
    

    您应该创建一个函数collapseAccordion,通过 api 调用折叠手风琴。

    【讨论】:

    • 很抱歉,如果我没有正确遵循代码,但是这不会在“.accordion”类中的任何点击上折叠 Accordion 吗?如果是这样,我正在寻找与此相反的...
    • 如果 它的作用是什么,我可以将这个类更改为类似“.on-click-collapse-accordion”,然后我有这个类的任何链接都会导致要调用的“collapseAccordion”函数?
    • 我在html 元素的clickhandler 中子选择.accordion 元素时犯了一个错误
    【解决方案2】:
    $(function () {
      $('body').mousedown(function (e) { 
        if($(e.target).closest('.accordion').length != 1){
           //click was outside accordion,
           // so close it
        }      
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-04
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 2012-11-21
      • 2011-05-01
      • 2016-02-28
      相关资源
      最近更新 更多