2011-08-09 16 views
3

私は、その外側のどこかでクリックが行われたときに非表示にする必要があるカラーピッカーを使用しています。 問題は、ピッカー内でクリックが行われても消えてしまうことです。1つの要素以外のボディの選択方法は?

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

私はこれを試しましたが、ピッカーを表示してすぐに非表示にします。 誰か提案がありますか?

ありがとうございます。

答えて

17

クリックされた要素を取得するためにevent.targetを使用してみてください:

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

素敵な溶液 - 1 – Vivek

+0

あなたは身体以来*ウィンドウ*または* HTML *代わりに*ボディ*を使用する場合がありますウィンドウ領域全体をカバーしていない可能性があります。 – Jari

+0

@ Jari、私は 'document'と一緒に行きます。私はそれが質問者によって使用される要素であるため、私の答えに「体」と一緒に行った。 –

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