单击手风琴菜单外部的链接时折叠jQuery手风琴

时间:2012-07-24 08:33:38

标签: javascript jquery jquery-plugins session-cookies

我正在使用这里的{jQuery手风琴菜单jQuery Vertical Accordion Menu Plugin。该插件运行良好,没有太多定制。我真正想要的是这个插件提供的功能是页面刷新后的持久菜单状态。这个插件使用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: '/'});
    }
});

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

$(function () {
  $('body').mousedown(function (e) { 
    if($(e.target).closest('.accordion').length != 1){
       //click was outside accordion,
       // so close it
    }      
});