2010-04-26 19 views
6

Dlaczego to fail ...jQuery: Jak znaleźć elementy * * bez pewnej klasy

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

... to znaczy wywąchać wejściowego, które nie dostał klasy .hadFocus a następnie gdy jeden z tych podzbiorów otrzyma fokus, powinien zapunktować wartość na zero.

W tej chwili wartości wejściowe są zawsze wysyłane - test .not ("input.hadFocus") nie zatrzymuje wykonywania.

Btw, poprzedzającym powyższy kod jest następujący kod, który działa prawidłowo:

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

Dzięki za spryt - wiwaty, -Alan

+0

duplikat: [W jaki sposób można wybrać wszystkie elementy bez danej klasy w jQuery?] (Http://stackoverflow.com/questions/2448051) – hippietrail

Odpowiedz

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

powodzenia

+0

TKS dunno dlaczego, ale ta wersja nigdy nie usuwa wartości. Ale tks za sugestię kodu, będę go dalej drapał ... – Alan

5

Ty potrzebujesz obsługi do uruchomienia w oparciu o bieżący stan elementu - nie stan, w którym był związany. Prawdopodobnie musisz użyć wiązania live.

Spróbuj czegoś takiego:

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

Dzięki, brzmi jak to będzie to. Teraz wystarczy znaleźć projekt, do którego się odnosi. Pozdrawiam, -Alan – Alan

Powiązane problemy