jQuery中的window.click事件问题

时间:2012-09-28 05:10:49

标签: jquery asp.net dom dopostback

我有一个常见的场景,当点击窗口时会关闭弹出窗口div。我使用的代码是

   $(window).load(function (){
   $('.popupstyle').live("click", function(e){
       return false;
    });
    });
   $(document).ready(function(){
   $(window).click(function(){
   $('.popupstyle').hide();
    });
  });

但问题是没有像LinkBut​​ton这样的控件的回发事件正在处理popup div。在popup div的click事件中返回false会产生问题。它会融合popuop div上的所有内容。不明白做什么修理一件事会扰乱另一件事。第一次点击时,直播活动也不起作用。任何建议

2 个答案:

答案 0 :(得分:0)

原因是事件冒泡,其中来自子元素的事件冒泡到父元素。

防止这种情况的一种方法是在遇到目标元素时使用 e.stopPropagation()

CHECK FIDDLE

答案 1 :(得分:0)

@sushanth是对的。它是因为事件冒泡,这是一个重要的核心js概念。虽然它可以让你在有2个听众($('.popupstyle').live("click"$(window).click)的情况下绊倒你,但我们也可以利用冒泡来发挥优势,并使用一个监听器($(window).click)执行相同的任务。

  $(window).click(function(e){
       if( ! $(e.target).hasClass('popupstyle') ){ $('.popupstyle').hide(); } 
  });

DEMO