Javascript 单击外部引导菜单将其关闭
我试图找到解决方案,在单击引导菜单外部(移动窗口大小)时关闭引导菜单,但无法使其工作,我通过以下代码在单击其中一个“a”链接时使其工作:Javascript 单击外部引导菜单将其关闭,javascript,jquery,css,twitter-bootstrap,menu,Javascript,Jquery,Css,Twitter Bootstrap,Menu,我试图找到解决方案,在单击引导菜单外部(移动窗口大小)时关闭引导菜单,但无法使其工作,我通过以下代码在单击其中一个“a”链接时使其工作: // menu buttons collapses when clicking a link $('document').ready(function() { if ($('a').on('click', function() { $('.collapse, #mainContain
// menu buttons collapses when clicking a link
$('document').ready(function()
{
if ($('a').on('click', function()
{
$('.collapse, #mainContainer').removeClass('in');
$('.navbar-toggle').toggleClass('collapsed'); // button
}));
});
但是如何通过点击菜单导航栏外的按钮来关闭菜单呢
这是我的页面,显示了问题所在
是的,我已经试过了,但没有成功:
答案如下:
(文档)。在('click',function()上{
$('.collapse')。collapse('hide');
})
希望有帮助:)
雷米答案如下:
(文档)。在('click',function()上{
$('.collapse')。collapse('hide');
})
希望有帮助:)
Remy假设您想在菜单外单击时执行与在菜单内单击时不同的操作(即折叠菜单),则您可能需要这样的操作来确定您是在菜单内还是在菜单外单击:
$('body').click(function(event){
// check if the clicked element is a descendent of navigation
if ($(event.target).closest('.navigation').length) {
return; //do nothing if event target is within the navigation
} else {
// do something if the event target is outside the navigation
// code for collapsing menu here...
}
});
大致显示了概念
当然,您需要将
.closest()
语句中的'.navigation'
替换为导航容器的相应选择器 假设您希望在菜单外单击(即折叠菜单)时执行与在菜单内单击不同的操作,则您可能需要类似的操作来确定您是在菜单内还是在菜单外单击:
$('body').click(function(event){
// check if the clicked element is a descendent of navigation
if ($(event.target).closest('.navigation').length) {
return; //do nothing if event target is within the navigation
} else {
// do something if the event target is outside the navigation
// code for collapsing menu here...
}
});
$(document).on('click',function(){
$('.collapse').collapse('hide');
});
大致显示了概念
当然,您需要将.closest()
语句中的'.navigation'
替换为导航容器的相应选择器
$(document).on('click',function(){
$('.collapse').collapse('hide');
});
只需复制代码并跳过自定义脚本或index.html
谢谢雷米
单击外部以隐藏引导切换菜单关闭(隐藏)它
只需复制代码并跳过自定义脚本或index.html
谢谢雷米
点击外部隐藏引导切换菜单关闭(隐藏)它在哪里查看网站?在哪里查看网站?在那里谢谢雷米,但我已经尝试过了。当我尝试这个并点击时,菜单根本不会出现。谢谢雷米,但我已经尝试过了。当我尝试此操作并单击时,菜单根本不会出现。ryandecker>我尝试了您的代码,并在单击时将其关闭,但仅当我单击导航栏时,问题可能是因为导航栏是index.html,而我在index.html中有一个iframe,它在index.html中打开mainpage.html。html
code
$(document)。就绪(函数(){$(文档)。单击(函数(事件){var clickover=$(event.target);var{u opened=$('.navbar collapse').hasClass('collapse in');if({u opened====true&!clickover.hasClass('navbar-toggle')){alert('opened');$('.collapse,#maincainer')。removeClass('in'));//菜单按钮折叠,htmlpage淡入/淡出后台fx运行$('.navbar toggle').toggleClass('collapsed');//按钮}}};});你能添加你的html吗?如果不知道html的结构,就不可能知道JS是否正确。很高兴仔细看看,但需要更多的信息来真正帮助你。另外,你完全正确,iframe改变了一些事情-实际上有一点。你的iframe与你的主页来自同一个域吗?为了它的价值,坐在你的座位上e(在你的问题中链接),我看不到nav有任何扩展…因此我无法说出目标行为是基于什么。谢谢Ryan,我尝试粘贴HTML,但评论时间太长。我使用了单击功能,但菜单仅在单击导航栏时关闭:我将新文件上载到服务器$(文档)。单击(功能(event){if($(event.target).is('page#u wrap,#wrap,img,#mainContainer,.container,#mainContainer.container,.col-lg-12.text-center,p.lead,div.jumbotron,div.navbar-header,h1')){警报('clicked:'event.target.nodeName,$)('collapse,#mainContainer').removeClass('in')).removeClass('in'))('in')).addClass('collapsed');}else{return;}});ryandecker>我尝试了您的代码,并在单击导航栏时将其关闭,但仅当我单击导航栏时,问题可能是因为导航栏是index.html,而我在index.html中有一个iframe,它在index.htmlcode
$(document)中打开mainpage.html.click(函数(事件){var clickover=$(event.target);var{u opened=$('.navbar collapse').hasClass('collapse in');if({u opened===true&&!clickover.hasClass('navbar-toggle')){alert('opened');$('.collapse,#maincainer')。removeClass('in'));//菜单按钮折叠,htmlpage淡入/淡出后台fx运行$('.navbar toggle').toggleClass('collapsed');//按钮}}};});你能添加你的html吗?如果不知道html的结构,就不可能知道JS是否正确。很高兴仔细看看,但需要更多的信息来真正帮助你。另外,你完全正确,iframe改变了一些事情-实际上有一点。你的iframe与你的主页来自同一个域吗?为了它的价值,坐在你的座位上e(在你的问题中链接),我看不到nav有任何扩展…因此我无法说出目标行为是基于什么。谢谢Ryan,我尝试粘贴HTML,但评论时间太长。我使用了单击功能,但菜单仅在单击导航栏时关闭:我将新文件上载到服务器$(文档)。单击(功能(event){if($(event.target).is('page#u wrap,#wrap,img,#mainContainer,.container,#mainContainer.container,.col-lg-12.text-center,p.lead,div.jumbotron,div.navbar-header,h1')){警报('clicked:'event.target.nodeName,$)('collapse,#mainContainer').removeClass('in')).removeClass('in'))('in')).addClass('collapsed');}else{return;}});