2012-07-24 172 views
0

我正在使用此处的这个jQuery手风琴菜单jQuery Vertical Accordion Menu Plugin。该插件运行良好,没有太多的定制。我非常期待这个插件提供的功能是页面刷新后的永久性菜单状态。这个插件使用cookies来实现这一点。关于这个问题...单击手风琴菜单之外的链接时折叠jQuery手风琴

如果您在手风琴菜单外单击,状态仍然保持不变。我试图找出一种方法来折叠整个菜单,当在手风琴菜单之外点击链接时。

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

我想最好的解决办法是一些jQuery的,如果一个被点击的#手风琴导航被点击,它会重置的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: '/'}); 
    } 
}); 

任何建议在一个更优雅的解决方案将不胜感激!感谢您花时间提前看看!

回答

0

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

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

你应该做一个函数collapseAccordion,其经API调用倒塌手风琴。

+0

对不起,如果我没有正确地跟踪代码,但是不会在'.accordion'类中点击任何点击折叠手风琴吗?如果是这样,我正在寻找与此相反的... – TravelingAdMan 2012-07-24 09:08:39

+0

如果_is_它做了什么我可以将此类更改为'.on-click-collapse-accordion'之类的东西,然后我有这个类的任何链接都会导致“collapseAccordion”函数被调用? – TravelingAdMan 2012-07-24 09:12:05

+0

我通过在'html'元素的clickhandler中再次选择'.accordion'元素而犯了一个错误 – 2012-07-24 10:05:07

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