2010-04-26 8 views
6

Warum dies ...jQuery: Wie Elemente finden * ohne * eine bestimmte Klasse

$('div.contactAperson input').not('input.hadFocus').focus(function() { 
    $(this).attr('value', ''); 
}); 

nicht scheitern ... es ist gemeint Eingabe des erschnüffeln, die die Klasse .hadFocus nicht bekommen haben und dann Wenn eine dieser Untergruppen den Fokus erhält, sollte sie den Wert auf null setzen.

Momentan werden die Eingabewerte immer gezappt - der Test .not ('input.hadFocus') kann die Ausführung nicht stoppen.

Btw, den obigen Code vorhergehenden ist der folgende Code, der feine Arbeit ist:

$('div.contactAperson input').focus(function() { 
    $(this).addClass('hadFocus'); 
}); 

Vielen Dank für jede Klugheit - Prost, -Alan

+0

Duplizieren von: [Wie kann ich wählen Sie alle Elemente ohne eine bestimmte Klasse in jQuery?] (Http://stackoverflow.com/questions/2448051) – hippietrail

Antwort

4
$('div.contactAperson > :input').not(':input.hadFocus').focus(function() { 
    $(this).attr('value', ''); 
}); 

Glück

+0

TKS, weiß nich Warum, aber diese Version löscht nie den Wert. Aber tks für den Code-Vorschlag, ich werde weiter daran kratzen ... – Alan

5

Sie muss der Handler basierend auf dem aktuellen Status des Elements ausgeführt werden - nicht der Status, als es gebunden war. Sie müssen wahrscheinlich eine live Bindung verwenden.

Probieren Sie etwas wie folgt aus:

$('div.contactAperson input:not(.hadFocus)').live('focus', function() { 
    $(this).attr('value', ''); 
}); 
+0

Danke, klingen wie das wird es sein. Jetzt muss ich nur noch das Projekt finden, auf das es sich bezieht. Prost, Alan – Alan

Verwandte Themen