2012-04-08 20 views
3

Ich habe ein gleitendes JS-Menü, das geöffnet wird, wenn Sie auf den Link "noty_menu" klicken, und schließt dann, wenn Sie erneut auf diesen Link klicken. Gibt es eine Möglichkeit, es so einzustellen, dass das Menü geschlossen wird, wenn Sie auf der Seite ANYWHERE klicken?Javascript-Element ausblenden, wenn Sie irgendwo auf Seite klicken

Hier ist der entsprechende Code:

$('.noty_menu').click(function() { 
$('ul.the_menu').slideToggle('medium'); 
}); 

Vielen Dank im Voraus!

Antwort

4

Sie könnten einen Klick auf den Körper fangen:

$('body').click(function() { 
    /* close menu */ 
}); 

Aber dann im Menü klicken Sie Ausbreitung des klicken bis zu Körper zu verhindern haben. Andernfalls öffnet sich das Menü, der Klick wird weitergeführt und das Menü wird sofort geschlossen. return false; sollte hier genügen:

$('.noty_menu').click(function() { 
    $('ul.the_menu').slideToggle('medium'); 
    return false; 
}); 

(Sie können auch im Falle Argument an die Behandlungsfunktion wie function(ev) { ... } und rufen ev.stopPropagation() lesen).

Sie können auch Klicks innerhalb des Menüs verhindern wollen, schließen sie:

$('ul.the_menu').click(function() { 
    return false; 
}); 

Beachten Sie, dass diese Lösung mit einem Vorbehalt kommt, dass jede andere Click-Ereignis, die Ausbreitung stoppt auch das Menü schließen verhindern.

2

kann u

$('body').click(function(){ 
//ur code 
}); 

, dies zu tun

2

Sie können das gesamte Dokument überprüfen, jedoch, dass die Klicks auf der Speisekarte (wenn Sie irgendeine Abstand haben, diese Benutzer stören könnte) durch etwas so:

var menu=$('ul.the_menu'); 
$(document).on('click',function(){ 
    if(menu.height>0) { 
     menu.slideToggle('medium'); 
    } 
}); 
Verwandte Themen