点击别处关闭浮层

2018-04-22  本文已影响0人  是刘快啊

需求:点击button出现浮层,点击别处关闭浮层。
我们有一个按钮和一个浮层,浮层内为一个checkbox,浮层默认不显示:

<div id="wrapper" class="wrapper">
    <button id="clickMe">点我</button>
    <div id="popover" class="popover">
        <input type="checkbox">浮层
    </div>
</div>
.wrapper{
  position: relative;
  display: inline-block;
}
.popover{
  position: absolute;
  border: 1px solid red;
  padding: 10px;
  margin-left: 1px;
  left: 100%;
  top: 0;
  white-space: nowrap;
  background: white;
  display: none;
}

方案一:监听button和document,button被点击时浮层显示,document除button和浮层以外的地方被点击是,浮层隐藏。

clickMe.addEventListener('click', function(){
  popover.style.display = 'block'
})
wrapper.addEventListener('click', function(e){
  e.stopPropagation()
}) //阻止冒泡
document.addEventListener('click', function(){
  popover.style.display = 'none'
})

方案二:用jQuery 只有在浮层显示的时候监听一次document。

$(clickMe).on('click', function(){
  $(popover).show()
  console.log('block')
  $(document).one('click', function(){
    $(popover).hide()
  }) //只在浮层show的时候监听一次document
})
$(wrapper).on('click', function(e){
  e.stopPropagation()
})
上一篇 下一篇

猜你喜欢

热点阅读