0

ウィンドウをクリックするとポップアップdivが閉じられるという一般的なシナリオがあります。私が使用するコードは

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

しかし、問題は、LinkBut​​tonのようなコントロールのポストバックイベントがポップアップdivで機能していないことです。ポップアップdivのクリックイベントでfalseを返すと、問題が発生します。popuopdivのすべてが融合されます。あることを修正することで他のことを邪魔する方法がわからない。また、ライブイベントはファーストクリックでは機能しません。助言がありますか

4

2 に答える 2

0

@sushanthは正しいです。これは、重要なコアjsの概念であるイベントバブリングが原因です。また、2人のリスナー($('.popupstyle').live("click"$(window).click)がいる状況ではつまずく可能性がありますが、バブリングを利用して1人のリスナー($(window).click)で同じタスクを実行することもできます。

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

デモ

于 2012-09-28T05:37:57.240 に答える
0

この原因は、子要素からのイベントが親要素にバブリングするイベントバブリングです。

これを防ぐ1つの方法は、ターゲット要素に遭遇したときにe.stopPropagation()を使用することです。

フィドルを確認してください

于 2012-09-28T05:16:25.467 に答える