2010-11-25 5 views
1

J'ai une balise div affichée à l'aide de la fonction JQuery slideDown.Comment exclure certains clics de stopPropagation()? Jquery

Pour faire glisser le div sauvegarder l'utilisation peut cliquer n'importe où sur la page.

$(document).click(function() { 
    $("#basket:visible").stop(true, true).slideUp("slow"); 
}); 

Bien sûr, je ne veux pas que la div soit fermée lorsqu'un utilisateur clique dedans. Donc, je l'utilise:

$("#basket").click(function (e) { 

    e.stopPropagation(); 
}); 

Maintenant, le problème que je vais avoir est qu'une forme est contenue dans la div et cela annule toutes les fonctions de clic dans la div.

Y at-il un moyen de fermer ce div en cliquant sur la page sans annuler tous les clics?

+0

Quels sont les gestionnaires d'événements de formulaire que cela arrête? –

+0

Etes-vous sûr que votre formulaire est à l'intérieur de ce div et non à l'extérieur? 'e.stopPropagation()' arrête uniquement la propagation des événements dans l'arborescence DOM, donc si vous avez un nœud dans #basket, il devrait tout de même attraper l'événement. – Grassator

Répondre

0

Jetez un oeil à event.target: http://api.jquery.com/event.target/

Cela vous permettra de vérifier quel élément l'événement est mise à feu à l'intérieur du gestionnaire de clic et agir en conséquence.

+0

Ceci est assez ambigu, pas vraiment une solution claire puisque le '.target' sera n'importe quel élément enfant ... cela ne vous rapporte que 1/3 de la vérification que vous devez effectuer. –

+0

Hmm, je vois ce que tu veux dire maintenant. Eh bien, dans ce cas, je serais intéressé de voir une solution pour l'autre 2/3. –

Questions connexes