2012-04-02 6 views
2

Wenn ich ein jQuery .click() -Ereignis sowohl für "body" als auch für ein "div" habe, wie würde ich es bekommen nur ausführen für das div und nicht den Körper, wenn das div geklickt wird? Im Grunde mache ich mein eigenes Kontextmenü und ich möchte irgendwo außerhalb des Elements klicken (in diesem Fall "div.button"), um das Menü zu schließen.Wenn ein jQuery.click() -Ereignis nur einmal innerhalb eines anderen .click() - Ereignisses ausgelöst wird

Rudimentär Beispiel:.

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

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

Wie Sie sich vorstellen können, die $ ("body") klicken() verhindert/blendet das Menü von selbst zeigt.

Eine kleine Anleitung würde sehr geschätzt werden. Danke fürs Lesen!

+1

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

Antwort

5

Du musst aufhören Ereignis ausbreiten wie diese

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

als nur Ihre Taste

+0

Schätzen Sie die Hilfe, Sir. Vielen Dank. – daveycroqet

1

Sie wollen event.stopPropagation() im Klick-Element verwenden angeklickt werden. Also:

$('div.button').click(function(e) { 
    e.stopPropagation(); 
    $('div.menu').show(); 
}); 
Verwandte Themen