2011-01-31 4 views
0

クリックイベントが、逆の操作で機能のコールバックを持つウィンドウ上の別のクリックイベントをバインドする要素に対してクリックイベントを持っています。この場合は、OSメニューのようなメニューです。メニューをクリックするとメニュー項目をクリックするか、メニューの外に出るとメニューが閉じます。右クリックメニュー、Ubuntu/Macのトップメニューバーなどと考えてください。クリックをバインドするときにウィンドウをクリックしないようにしますか?

私の問題は、クリック時のクリックイベントがウィンドウをトリガーしているためです。どのように「遅延」してすべての「将来の」クリックをすることができますか?

 {..code...} 
     actionMenu: function(action,item){ 
     if(action == 'open'){ 
      $(window).bind('click.contextMenus',app().actionMenu('close')); 
      $(item).addClass('active').find('ol').css({display:'block',top:$(item).outerHeight()+'px'}); 
     } 
     else if(action == 'close'){ 
      app().debug('closed?','console'); 
      $('#menu .active').removeClass('active'); 
      $('#menu > ol > li ol').css({display:'none'}); 
      $(window).unbind('click.contextMenus'); 
     } 
     }, 
     {..code...} 

そして:

$('#menu > ol > li').click(function(e){ 
    if($(this).find('ol').is(':visible')){ 
     app().actionMenu('close'); 
    } 
    else{ 
     app().debug('clicked?','console'); 
     app().actionMenu('open',this); 
     return false; 
    } 
    }); 

答えて

1

代わりにあなたがapp().debug('closed/clicked?','console');を探している場合

だから私のコードは次のようになります...あなたは2を参照してくださいよ、とクリックで、彼らは 両方火災ウィンドウにバインドすると、 <body>にバインドすることができます(バインド時に伝播を停止するかどうかはわかりません)

$('body').bind('click.contextMenus',app().actionMenu('close')); 

、その後、あなたは、私は密接に十分に見ていなかった親要素のonclickの

$('#menu > ol > li').click(function(e){ 
    e.stopPropagation(); 
    if($(this).find('ol').is(':visible')){ 
     app().actionMenu('close'); 
    } 
    else{ 
     app().debug('clicked?','console'); 
     app().actionMenu('open',this); 
     return false; 
    } 
    }); 

EDIT

を発射からそれを停止するには、メニューのOnClickにイベントの伝播を防ぐことができます。

$(window).bind('click.contextMenus',app().actionMenu('close')); 

ここで実際にactionMenu()関数を呼び出しています。あなたは代わりにこれを実行する必要があります。 `falseを返す追加

$(window).bind('click.contextMenus', function() { app().actionMenu('close') }); 
+0

てみてください;' 'アプリ(後)をactionMenu( '近い');' – Damp

+0

が私の答え – Damp

+0

YESを更新しました。!ありがとうございました。 Duh ...私はそれを逃したとは思わない。もう一度おねがいします! –

関連する問題