2012-10-23 13 views
7

Czy istnieje sposób wykluczenia lub wyboru etykiety według typów danych wejściowych, podobnie jak w polu wprowadzania?Wybierz etykietę według typu wejściowego

label:not([type=checkbox]) 
label[type=checkbox] 
+0

Co właściwie jest twoim pytaniem? czy chcesz wiedzieć, jakie są inne typy danych wejściowych ... nie mogłem jasno zrozumieć ... powtórzyć ... – Vinay

+0

Drugi zdecydowanie działa. Selektor css "[atrybut = wartość]" działa na cokolwiek, a nie tylko na wejście. (można uzyskać nazwy klas, jeśli jest wyłączona itp.) Może to nie działać w niektórych starszych wersjach IE. Nie widziałem wcześniej: nie selektora, więc nie mogę tego komentować. – Andrew

+0

@Jeśli pytanie brzmi: jak wybrać lub wykluczyć etykietę dla pola wejściowego typ pola = pole wyboru, w CSS? – InTry

Odpowiedz

13

Jeśli dajesz wyboru określonego identyfikatora, że wszyscy zaczynają z tego samego, można wykonać następujące czynności:

HTML

<input type="checkbox" id="chkTerms" /> 
<label for="chkTerms">Read terms & conditions</label> 

CSS

label[for*="chk"], label[htmlfor*="chk"] 
{ 
css here 
} 

Tylko prawdopodobnie nowoczesne przeglądarki. EDYCJA: Właśnie próbowałem skrzypce: link i działa w chrome i IE 8 & 9, ale nie 7. Nie próbowałem go w FF.

EDIT2: Aby wyjaśnić, co się tu dzieje, nawiasy kwadratowe szukają wymaganego atrybutu. Gwiazdka zmienia zachowanie równości z zwykłego równika, na znacznik zawiera - wszędzie tam, gdzie atrybut for zawiera "chk", zastosuje ten styl. Możesz zastąpić * znakiem ^, a zmieni to na początek z zamiast zawiera.

EDIT3: BoltClock dostarczył poprawkę do IE7 w komentarzu, zaktualizowałem odpowiedź, aby ją uwzględnić.

+0

to jest dokładnie to, czego szukałem – InTry

+1

Y Tak, IE7 ma problem z selektorami atrybutu, a 'for' jest znanym przykładem, gdzie zamiast tego musisz użyć' htmlFor'. – BoltClock

+0

@BoltClock Nie wiedziałem o html dla selektora. Dzięki :-) Zaktualizuję mój post, aby uwzględnić to, aby naprawić IE7. – Andrew

3

Co powiecie na ? Może działać, jeśli tekst znajduje się tuż za elementem wejściowym. Nie testowałem tego.

+0

Rzeczywiście, działa tylko wtedy, gdy etykieta jest po elemencie wejściowym :( – InTry

+0

Czy można zmodyfikować html? Można na przykład dodać klasy dla tych etykiet.Albo użyj jQuery, aby przejść przez wszystkie etykiety i sprawdź, jakiego rodzaju dane wejściowe mają. – Antti

+0

To jest świetny pomysł, pomimo jego ograniczeń –

1

można korzystać z wyboru podstawowego odniesienia danych atrybutu ..

<input type="checkbox" name="checkbox-1" id="checkbox-0" class="custom" /> 
<label for="checkbox-0">Whatever</label> 

Jeśli nie można oczekiwać tego ... daj nam znać ...

+0

Wiem, że mogę użyć id lub klasy, zapytałem, czy byłoby to możliwe w inny sposób, bez za pomocą 'label {style}' następnie zastąp go '# checkbox-0 {style}' – InTry

Powiązane problemy