2012-03-08 17 views
7

In pratica sto cercando di creare un semplice menu a discesa con html, css e jquery e ho problemi a chiudere il div quando un utente fa clic su di esso.nascondere DIV quando si fa clic su di esso

ho provato stopPropagation e associare un'azione al documento quando si fa clic, non funzionano o non ho idea di come usarli. comunque dare un'occhiata al codice qui sotto

HTML

<div id="optionsMenu"> 
    <a href="account.php?edit=info">Account Settings</a>  
</div> 

JQuery

$('.options').click(function(){ 
    if($('#optionsMenu').css("display") == 'none'){ 
     $('#optionsMenu').slideDown("fast"); 
    } 

    else{ 
     $('#optionsMenu').slideUp("fast"); 
    } 
}); 

$('#optionsMenu').blur(function(){ 
    $('#optionsMenu').css("display","none"); 
}); 

qualsiasi aiuto sarebbe molto appriciated.

risposta

9

Si dovrebbe usare stopPropagation:

$(body).click(function(e) 
{ 
    $('#optionsMenu').slideUp('fast'); 
}); 
$('#optionsMenu').click(function(e) 
{ 
    e.stopPropagation(); 
}); 
+0

Mi è piaciuta la tua risposta perché era semplice e facile da capire –

3

Si potrebbe utilizzare on(), forse:

$('body').on('click', function(e){ 
    if ($(e.target).not('#optionsMenu')){ 
     $('#optionsMenu').slideUp('fast'); 
    } 
}); 

Quanto sopra non ancora testato, ma dovrebbe, penso che il lavoro.

+0

Grazie per la risposta, ma questo fa solo la diapositiva menù in basso e poi scivolare di nuovo, quindi non è quello che im cercando. –

+1

Sì, hai ancora usato 'e.stopPropagation();' nel gestore eventi che mostra il '# optionsMenu'. Guarda la demo. –

+0

Grazie capisco ora, che tipo di ha funzionato. –

Problemi correlati