2011-11-14 8 views
0

以下は、クリックがrl_menu/any要素のいずれでもない場合にコマンドを実行するコードです(.comment、.rl_arrow、など)特定の要素がクリックされていないときにmousedownでアクションを実行するには

TBR.mouse_down = function(e){ 
    target = $j(this) 
    if (target != $j("#rl_menu") && target != $j("#rl_menu .comment") && 
    target != $j("#rl_menu .change") && target != $j("#rl_menu .rl_arrow_border") && 
    target != $j("#rl_menu .rl_arrow")){ 
     TBR.Menu.hide(); // this needs to be triggered when the menu is not clicked on. 
    } 
} 

しかし、私がターゲットを検査するとき、ターゲットはドキュメントです。要約すると

:ドキュメント内の

どこでも、マウスボタンが押されたときに、TBR.Menu.hide()が実行されなければなりません。クリックが#rl_menuの場合、TBR.Menu.hide()は実行しないでください。

私はこれについて間違った方法をしていますか?

答えて

3

これを少し簡単に書くことができますか?

$(function(){ 

    $("body").click(function(e){ 
     var t = $(e.target); 
     if(!t.is("#rl_menu") && t.closest("#rl_menu").length == 0) 
     { 
      alert("CLICKD OUTSIDE THE GREEN") 
     } 
    }); 
}); 

ライブデモ:http://jsfiddle.net/JBuJm/

0

あなたのイベントがバブルアップevent.targetをする場合は、イベントがバインドされている要素を指します。クリックした要素を取得するにはevent.originalEvent.targetを使用します。

関連する問題