Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击accordion菜单外的链接时折叠jQuery accordion_Javascript_Jquery_Jquery Plugins_Session Cookies - Fatal编程技术网

Javascript 单击accordion菜单外的链接时折叠jQuery accordion

Javascript 单击accordion菜单外的链接时折叠jQuery accordion,javascript,jquery,jquery-plugins,session-cookies,Javascript,Jquery,Jquery Plugins,Session Cookies,我正在使用这里找到的jQuery手风琴菜单。插件在没有太多定制的情况下运行良好。我一直在寻找这个插件提供的特性是页面刷新后的持久菜单状态。这个插件使用cookies来实现这一点。关于这个问题 如果在“手风琴”菜单外单击,状态仍保持不变。我试图找出一种方法,当在手风琴菜单外单击链接时,可以折叠整个菜单 我的第一个倾向是,当window.location等于某个URL时,找到某种方法来删除或重置状态保存cookie中的数据。(目前,如果返回主页时菜单完全折叠,我会很高兴) 我认为最好的解决方案是使用

我正在使用这里找到的jQuery手风琴菜单。插件在没有太多定制的情况下运行良好。我一直在寻找这个插件提供的特性是页面刷新后的持久菜单状态。这个插件使用cookies来实现这一点。关于这个问题

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

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

我认为最好的解决方案是使用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: '/'});
    }
});

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

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

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

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

如果我没有正确地遵循代码,那么很抱歉,但是在“.acordion”类中的任何单击都不会折叠accordion吗?如果是这样的话,我在寻找与此相反的东西…如果是这样的话,我可以将这个类更改为类似“.单击collapseAccordion”,然后我打开这个类的任何链接都会导致“collapseAccordion”要调用的函数?我犯了一个错误,在
html
元素的clickhandler中选择了
.accordion
元素
$(function () {
  $('body').mousedown(function (e) { 
    if($(e.target).closest('.accordion').length != 1){
       //click was outside accordion,
       // so close it
    }      
});