聆听按键和"点击外面"对于popovers /特定类

时间:2014-09-03 12:34:05

标签: javascript popover

我正在实施popovers,因为现有的库不够灵活。我想用类.popover设置任何div,它显示行为:

  1. 销毁逃生钥匙
  2. 在边界外点击时销毁
  3. 两者都是事件,都需要应用于归类为.popover的元素。在逃跑时摧毁弹出窗口:

    $(document).keyup(function(e) {
    
      if (e.keyCode == 27) { 
        popovers = $(".popover");
        //destroy popovers
     }
    });
    

    但我仍然坚持如何聆听鼠标点击全球,并确定它们是否发生在.popover之外。

    SO answers提到有一个全局点击侦听器,它会销毁所有.popover并向每个弹出窗口添加一个点击侦听器,以阻止事件传播到全局侦听器。

    但我想在全球范围内定义一次,而不是每次为我制作的每一个popover定义一次。我该怎么做?

2 个答案:

答案 0 :(得分:0)

$('body').click(function(e) {
  if(!$(e.target).hasClass("popover")) { 
       //if element does not have a ".popover" class => it's outside
   $(".popover").remove();
  }
});

其中e.target是您点击的元素

答案 1 :(得分:0)

  1. 您可以使用z-index -1创建覆盖整个页面的div。
  2. 在弹出窗口中,您可以将它带到前面
  3. 在该div上注册popover关闭onclick事件
  4. 在弹出窗口关闭时,将其带回所有元素后面。