在点击外部元素时关闭面板,如果面板是可见的
jQuery - Toggle a panel closed on click of outside element, only if panel is visible
我正在做这个网站:http://dev.rjlacount.com/treinaAronson/index.php
我最后要做的是设置联系人面板(你可以看到,如果你点击左上角的"联系人"按钮)关闭,如果它目前是打开的,用户要么点击面板外(在"#content"区域)或按esc键。
我认为在#content区域触发器中点击是比较容易的,所以我从它开始。我读过几个线程触发函数只有当元素是可见的,但我已经提出了到目前为止根本不工作:
$("#panel").is(":visible") {
$("#content").click(function(){
$("#panel").slideToggle("3000");
});
};
这破坏了联系人按钮的功能,我尝试了几种不同的方法,但都无济于事。我这里有什么明显的错误吗?如有任何建议,不胜感激。
谢谢!
将Click
和Keydown
函数绑定到文档,并确保当单击面板或翻转按钮时click
函数不会冒泡到文档。像这样:
$(document).bind({
keydown:function(e) {
if (e.keyCode == 27 ) {
$("#panel").slideUp("3000");
}
}, click: function(e) {
$("#panel").slideUp("3000");
}
});
$('#flip, #panel').bind('click', function(e){return false});
为什么不在面板打开时为页面主体添加一个类,在面板关闭时删除它呢?这样就简单多了:
$('.class #content').click(function(){
// Close the contact panel
});
现在,当正文有一个class' class'类时,任何点击#contentdiv都会自动关闭联系。
有意义吗?顺便说一下,这个网站很好看。
$('#flip').bind('click', function(){
$(this).toggleClass('contactOpen');
$("#panel").slideToggle("3000");
});
$('#content').bind('click', function(){
if($('#flip').hasClass('contactOpen')){
$(this).toggleClass('contactOpen');
$("#panel").slideToggle("3000");
}
});
相关文章:
- 如果元素在容器外部,是否可以相对于容器以绝对定位来定位该元素
- setInterval - 如果元素具有类外部间隔
- jQuery-检查外部页面上是否存在DIV,如果存在,则加载DIV,否则加载另一个
- 如果在Div元素外部单击,请关闭该元素
- 如果外部资源不是't在Firefox上加载
- 如果在外部单击,则隐藏弹出窗口.为什么我的脚本没有'不起作用
- 如果外部应用程序更改了持久模型(服务器数据库),AngularJS 是否可以自动更新视图
- 检查类是否处于活动状态,如果是,请运行外部.js文件?可能
- 如果命令嵌入在外部站点中,如何运行函数 cordova
- 在节点中热重载外部 js 文件.js如果文件有任何更改
- 如果我的所有页面都不同,我如何避免页面内 Javascript 并使用外部 Javascript 文件
- 角度材质 md 菜单元素如果在具有 z 索引的固定元素上单击外部,则不会关闭
- Grunt:如果外部配置不可用,请使用默认值
- 如果鼠标位于浏览器外部,Three.js平面将被隐藏
- 如果脚本文件放置在外部,则未获取${findState}值
- 如果选中复选框,则复制TR元素并附加到外部源
- 如果没有jQuery,则会从外部css文件或内部样式表中告知信息
- 如果突破是在条件块内,我们的外部
- 如果用户按下回车键或在外部单击,则保留元素的新html值
- 如果内部函数没有'不要使用外部变量的任何变量