2012-04-02 8 views
2

"body"と "div"の両方に対してjQuery .click()イベントが発生した場合、どうすればdivがクリックされたときにのみdivを実行し、bodyは実行しません。基本的には、私自身のコンテキストメニューを作っていますし、要素の外側のどこかをクリックして(この場合は "div.button")、メニューを閉じる必要があります。jQueryの.click()イベントを別の.click()イベント内に1回だけ発生させる

初歩的例:

$("body").click(function(event){ 
    if($("div.menu").is(":visible")){ 
     $("div.menu").hide(); 
    } 
    }); 

    $("div.button").click(function(event){ 
    $("div.menu").show(); 
    }); 

あなたが想像できるように、$( "体")(クリック)しないように/でも表示からメニューを非表示になります。

少しガイダンスをいただければ幸いです。読んでくれてありがとう!あなただけのボタンより、この

$("div.button").click(function(event){ 
    event.stopPropagation(); 
    // do something 
}); 

のようなイベントを伝播停止する必要が

+1

http://api.jquery.com/event.stopPropagation/ –

答えて

5

は、あなたがクリック要素内event.stopPropagation()を使用したい

+0

助けを歓迎します。どうもありがとうございました。 – daveycroqet

1

をクリックします。したがって:

$('div.button').click(function(e) { 
    e.stopPropagation(); 
    $('div.menu').show(); 
}); 
関連する問題