2012-10-23 12 views
7

Esiste un modo per escludere o selezionare Etichetta in base ai tipi di input, qualcosa di simile al campo di input?Seleziona etichetta in base al tipo di ingresso

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

Qual è la tua domanda in realtà? vuoi sapere quali sono gli altri tipi di input ... non riesci a capire chiaramente .. riformula ... – Vinay

+0

Il secondo funziona sicuramente. Il selettore '[attribute = value]' css funziona per qualsiasi cosa, non solo per un input. (potresti ottenere i nomi delle classi, se è disabilitato, ecc.) Questo potrebbe non funzionare in alcune vecchie versioni di IE. Non ho ancora visto il: non selector, quindi non posso commentare. – Andrew

+0

@Vinay question is, how to select o exclude label for input fieldtype = checkbox, in CSS? – InTry

risposta

13

Se si danno i caselle specifiche iD che iniziano tutti con la stessa cosa, si potrebbe procedere come segue:

HTML

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

CSS

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

Probabilmente solo browser moderni. EDIT: Ho appena provato un violino: link e funziona in chrome e IE 8 & 9 ma non 7. Non l'ho provato in FF.

EDIT2: Solo per dare una spiegazione di cosa sta succedendo qui, le parentesi quadre cercano un attributo richiesto. L'asterisco cambia il comportamento degli uguali da un semplice uguaglianza, per significare contiene - ovunque l'attributo for contenga "chk" applicherà quello stile. È possibile sostituire * con a^e cambierà in base all'avvio anziché a contiene.

EDIT3: BoltClock ha fornito una correzione per IE7 in un commento, ho aggiornato la risposta per includerlo.

+0

questo è esattamente quello che sono stato cercato per – InTry

+1

Y eah, IE7 ha problemi con i selettori di attributi e 'for' è un famoso esempio in cui è necessario utilizzare' htmlFor'. – BoltClock

+0

@BoltClock Non ero a conoscenza del selettore htmlfor. Grazie :-) aggiornerò il mio post per includerlo per correggere IE7. – Andrew

3

Che ne dici di input[type=checkbox] + label { /*label style here*/ }? Potrebbe funzionare se il testo è subito dopo l'elemento di input. Non l'ho provato.

+0

infatti, funziona solo se l'etichetta è dopo l'elemento di input :( – InTry

+0

Puoi modificare l'html? Potresti ad esempio aggiungere classe per quelle etichette o usare jQuery per andare attraverso tutte le etichette – Antti

+0

Questa è una bella idea, nonostante i suoi limiti. –

1

È possibile utilizzare il checkbox con riferimento di base di dati-attributo ..

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

Se non vi aspettate questo ... fateci sapere ...

+0

So che posso usare ID o classe, ho chiesto se sarebbe possibile farlo in un altro modo, senza usando 'label {style}' poi sovrascrivilo con '# checkbox-0 {style}' – InTry

Problemi correlati