javascript - 单击一个按钮显示,其他地方隐藏

标签 javascript jquery html css

我在这里看过类似的问题,但没有一个能真正帮助我解决问题。

所以我的设置是这样的:

<body>
  ...some code
  <button id="button" onClick="showPopup()">click me!</button> 
  <div id="popup">
    ...stuff
  </div>

  ..some more code

</body>

对于我的CSS我有

#popup{
  z-index:2;
  ...other styling
}

而其他一切都是 z-index 1

和javascript

$("#popup").hide();   //default
function showPopup(){
   $("#popup").show();
}

我希望弹出窗口在单击按钮时显示,并在单击其他任何地方时隐藏。

$(document).click(function (e){$("#popup").hide();}

这是行不通的,因为弹出窗口是文档的一部分,所以当单击按钮时,它会立即显示然后隐藏。 我还尝试添加类并隐藏 if hasClass 但没有用。 z-index 的不同也与此有关吗?

最佳答案

删除内联事件处理程序并执行

$("#popup").hide();

$(document).on('click', function(e) {

    if ( $(e.target).closest('#button, #popup').length ) {
        $('#popup').show();
    } else if ( $('#popup').is(':visible') ) {
        $('#popup').hide();
    }

});

FIDDLE

关于javascript - 单击一个按钮显示,其他地方隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929615/

相关文章:

javascript - 根据内容中的位置调整图像大小

javascript - 使用js在多个页面上显示页眉和页脚

javascript - 用于头像创建的 jQuery/JavaScript 库?

javascript - 如何在SMOKE js验证插件中添加自定义规则?

javascript - 函数参数在我不更改的情况下自行递增

javascript - ng-repeat 中的参数无效

javascript - 函数加载 jQuery 的字符结果内容无法识别?

javascript - 使用对象的值添加 onclick 事件

jquery - 我可以隐藏网站中使用的jquery版本吗?

HTML 下拉移动一切