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