How to select body except one element?

cili picture cili · Aug 9, 2011 · Viewed 12.4k times · Source

I'm using a color-picker which should be hidden when a click is made anywhere outside it. The problem is, it disappears even when the click is made inside the picker.

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

I tried this, but it would show the picker and hide it immediately. Does anybody have a suggestion?

Answer

Frédéric Hamidi picture Frédéric Hamidi · Aug 9, 2011

Try using event.target to obtain the element that was clicked:

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