J’ai lu beaucoup d’autres questions concernant la fermeture d’une div lorsque vous cliquez en dehors de celle-ci, mais j’ai un problème complexe en ce sens que d’autres éléments sont liés à .live ().
Ce que je veux, c’est que si je clique n’importe où sur la page, la div disparaît, y compris si je clique sur un élément «en direct». Lorsque je clique sur cet élément actif, je souhaite que son gestionnaire procède normalement.
Pour l’instant, la méthode la plus simple pour gérer la fermeture de la division consiste à attacher un écouteur de clic au document ou $, mais cela empêcherait tout autre événement en direct de dépasser le gestionnaire body / doc susmentionné. Y a-t-il un moyen de contourner ceci?
En live, les événements font grimper les échelons du début à la fin dans cet ordre. Dans le clic de votre élément ‘live’ (qui est un enfant direct / indirect de votre object body), si vous ne retournez pas false ou n’arrêtez pas la propagation, cela fera remonter l’échelle pour atteindre le gestionnaire de clics du document. Joindre le clic du document via live ne semble pas fonctionner.
Vérifiez l’exemple de mise en œuvre ici: http://jsfiddle.net/VHtSP/6/
$('div.menu').live('click', function(e) { e.stopPropagation(); alert('click inside menu. will not propagate.'); return false; }); $(document).click(function() { alert('document click() handler.'); // close the div $('div.menu').hide(); }); $('a').live('click', function() { alert(' click() handler'); // .. your code to handle the live element's click });