2008-11-26 6 views

Répondre

30

Joindre un événement de clic au document pour cacher la div:

$(document).click(function(e) { 
    $('#somediv').hide(); 
}); 

Joindre un événement click la div pour arrêter clique dessus de se propager au document:

$('#somediv').click(function(e) { 
    e.stopPropagation(); 
}); 
+0

Merci beaucoup! Cela a fonctionné comme je le voulais. – sumek

+0

AFAIK, avec jQuery dans le deuxième gestionnaire d'événements vous avez seulement besoin de "return false"; arrêter la propagation. http://docs.jquery.com/Events/click (près du bas de la page) – scunliffe

+2

@scunliffe - C'est vrai, ils font fondamentalement la même chose. La bonne chose à propos de stopProp est qu'il ne doit pas être la dernière ligne, donc vous pouvez toujours le mettre sur la première ligne pour la lisibilité, par exemple. –

2

idée d'abord, javascript brut (de this post):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
    <head> 
    <title>Untitled Document</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <meta http-equiv="Content-Style-Type" content="text/css"> 
    <meta http-equiv="Content-Script-Type" content="text/javascript"> 
    <style type="text/css"> 
     <!-- 
     #mydiv{ 
     background-color: #999999; 
     height: 100px; 
     width: 100px; 
     } 
     --> 
    </style> 
    <script type="text/javascript"> 
     document.onclick=check; 
     function check(e) 
     { 
     var target = (e && e.target) || (event && event.srcElement); 
     var obj = document.getElementById('mydiv'); 
     if(target!=obj){obj.style.display='none'} 
     } 
    </script> 
    </head> 
    <body> 
    <div id="mydiv">my div</div> 
    </body> 
</html> 

testé avec IE6 et FireFox3.1, il ne fonctionne pas comme annoncé.

0

Si le div a le focus, vous pouvez attacher à l'événement onblur.

Questions connexes