Was ich tatsächlich bekomme, ist angegeben in: http://jsfiddle.net/y9uwY/7/
Was ich möchte:
- Wenn der Benutzer auf den schwarzen Bereich klickt, sollte nichts passieren
- Klicken außerhalb des schwarzen Bereichs muss geschlossen sein
3 Antworten
Sie müssen verhindern, dass das Ereignis in den Körper sprudelt. Hier ist der korrigierte Code http://jsfiddle.net/y9uwY/8/
Als Referenz und weiterführende Literatur: Was ist das Sprudeln und Erfassen von Ereignissen?
Versuchen Sie diese Geige, Ihr body
-Tag hat immer nur die Größe des Hauptelements .select_roles
. Wenn Sie also die Breiten und Höhen auf 100% einstellen, erhalten Sie einen anklickbaren Bereich für das Ausblenden (dies funktioniert in msot-Browsern , um ein wenig mehr zu ermöglichen, könnte es sich auch lohnen, etwas Polsterung hinzuzufügen). Dies setzt einfach .select_roles
auf display:none;
, beginnt jedoch mit der Klasse .active
, um es display:block;
zu machen, sobald Sie außerhalb des Bereichs klicken, in dem wir die Klasse .active
entfernen .
Geige: http://jsfiddle.net/y9uwY/3/
Probieren Sie jetzt die Geige http://jsfiddle.net/y9uwY/9/
$('.select_roles').click(function (e){
e.stopPropagation();
if($(this).hasClass('active')){
}
});
$('body').click(function (){
if($('.select_roles').hasClass('active')){
$('.select_roles').removeClass('active');
}
});