2010-12-02 15 views
1

Also versuche ich ein Formular auf Unschärfe zu schließen, z. Facebook Kommentare. Das Problem ist, ich hatte:Abschlussformular auf "Unschärfe" - Gibt es einen besseren Weg?

$(window).click(function(){ $('.comment_form').hide(); }); 
$('.comment_form').click(function(){ return false; }); 

Welche fein gearbeitet, jedoch durch das Hinzufügen, dass return false, den Absenden-Button aufhebt, wenn darauf geklickt, als ich ging, um tatsächlich es live schalten.

dachte ich, das wäre logisch anstatt arbeiten:

$('*:not(.comment_form,.comment_form *)').click(function(eve) 
{ 
    $('.comment_form').hide(); 
}); 

Aber leider, ist es nicht, und ich nehme an, es ist, weil, wenn ich auf klicken, sagen wir, .comment_form i auf body eigentlich bin klicken, div, div ... etc, so dass es tatsächlich mehrere Male versteckt.

um meine Arbeit war schließlich

$('*').click(function(eve) 
{ 
    if(!$(eve.target).is('.comment_form,.comment_form *')) 
    { 
     $('.comment_form').hide(); 
    } 
}); 

aber ich bin nicht so sicher, ob ich diese gerne und deshalb im fragen. Dies wird dieses Klickereignis mit jedem einzelnen Klick auslösen.

Hat jemand irgendwelche Vorschläge?

+0

Ich bin sicher, dass die Antwort auf diese liegt auf der Hand , aber warum nicht '$ ('. comment_form input') verwenden. blur (function() {...})'? –

+0

Da dies ein Formular ist, ist der Kommentarbereich ein Textfeld und ich möchte auch nicht, dass es geschlossen wird, wenn Sie es verpassen und direkt neben dem Senden klicken. –

Antwort

1

Ihre Lösung ist auf dem richtigen Weg, aber es könnte sein saner das Ereignis document, statt alle Elemente (*) zu befestigen:

$(document).click(function(eve) { 
    if (!$(eve.target).is('.comment_form, .comment_form *')) { 
     $('.comment_form').hide(); 
    } 
}); 
+0

schön. Danke, Mann, versuch es mal. –

+0

Hmm ... wenn ich das tue, kann ich nicht mehr auf "Kommentar" klicken, es scheint alle Klicks zu blockieren ... hmm ... –

Verwandte Themen