当下拉菜单打开并且用户单击文档时,尝试关闭下拉菜单
trying to close dropdown menu when dropdown menu is open and user clicks document
当用户在打开状态之外单击时,我试图隐藏我的下拉菜单,我使用标志isActive
来确定菜单是否打开,然后我在文档上添加了一个单击事件,以在打开时隐藏菜单,并在单击时停止在菜单上传播。然而,现在当我单击下拉锚定标记时,文档单击事件被触发。有人能建议我如何解决这个问题吗?
JS-
//User profile share tooltip
$('.btn-social-share').on('click', function(e){
e.preventDefault();
if( !isActive ){
$('.social-share-options').show();
isActive = true;
} else {
$('.social-share-options').hide();
isActive = false;
}
});
/* Anything that gets to the document
will hide the dropdown */
$(document).on('click', function(){
if( isActive ){
$('.social-share-options').hide();
isActive = false;
}
});
/* Clicks within the dropdown won't make
it past the dropdown itself */
$('.social-share-options').click(function(e){
e.stopPropagation();
});
设置一个条件,检查单击的内容是否在下拉列表中,然后如果单击的内容不在下拉列表内则隐藏下拉列表:
$(document).on('click', function(e){
if( isActive && $(e.target).closest('.social-share-options').length === 0 ){
$('.social-share-options').removeClass('is-active');
isActive = false;
}
});
我还没有测试过,但我认为您需要添加e.stopPropagation()
,这将防止您的事件冒泡:
$('.btn-social-share').on('click', function(e){
e.preventDefault();
e.stopPropagation();
//...
http://api.jquery.com/event.stopPropagation/
相关文章:
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- angular的下拉菜单
- 创建带有和不带有JavaScript的Bootstrap下拉菜单
- 创建下拉菜单
- 下拉菜单在菜单按钮的边缘闪闪发光
- 如何为下拉菜单中的不同选项创建不同数量的输入文本字段
- AngularJS-用下拉菜单填充输入文本字段
- jQuery - 单击包含
- 下拉菜单的嵌套文本字段悬停
- 在选择下拉菜单时创建文本字段
- Javascript 使用下拉菜单选项创建文本字段
- 文本字段引导程序内的下拉菜单
- (文档).click函数在我的下拉菜单中导致故障
- IE7中的HTML5文档类型破坏了Jquery下拉菜单
- 双击从(文档)而不是一次关闭选择下拉菜单
- 从html下拉菜单中提取文本(rMarkdown文档)
- 我如何创建一个下拉菜单,把数据从一个数组在一个文本字段
- 当选择下拉菜单选项时,需要填充多个文本字段
- 基于Javascript/Coldfusion 8的文本字段填充下拉菜单
- 引导下拉菜单在菜单项上添加文本字段,单击
- 当下拉菜单打开并且用户单击文档时,尝试关闭下拉菜单