2011-08-09 4 views
3

J'utilise un sélecteur de couleurs qui devrait être caché lorsqu'un clic est fait n'importe où à l'extérieur. Le problème est qu'il disparaît même lorsque le clic est effectué à l'intérieur du sélecteur.Comment sélectionner le corps sauf un élément?

$('body :not(#picker)').click(function() { 
    $('#picker').fadeOut(); 
}); 

J'ai essayé ceci, mais cela montrerait le sélecteur et le cacherait immédiatement. Est-ce que quelqu'un a une suggestion?

Merci.

Répondre

17

Essayez d'utiliser event.target pour obtenir l'élément qui a été cliqué:

$("body").click(function(event) { 
    if (event.target.id != "picker") { 
     $("#picker").fadeOut(); 
    } 
}); 
+0

belle Solution- +1 – Vivek

+0

Vous pouvez utiliser * fenêtre * ou * .html * au lieu de * corps * puisque le corps pourrait ne pas couvrir toute la surface de la fenêtre. – Jari

+0

@Jari, je voudrais aller avec 'document', alors. Je suis allé avec 'body' dans ma réponse parce que c'est l'élément utilisé par le questionneur. –

3
$("body").click(function(e) { 
    if ($(e.target).attr('id') == 'picker') { 
     return; 
    } else { 
     $('#picker').fadeOut(); 
    } 
}); 
Questions connexes