C'è un modo in CSS per selezionare un elemento che ha un sottoelemento con una determinata classe?Seleziona elemento in base alla classe figlio
Desidero applicare uno stile a un elenco <ul>
con <li>
con una classe particolare.
C'è un modo in CSS per selezionare un elemento che ha un sottoelemento con una determinata classe?Seleziona elemento in base alla classe figlio
Desidero applicare uno stile a un elenco <ul>
con <li>
con una classe particolare.
Questo non è possibile con css, dal momento che stai lavorando contro la cascata selezionando un antenato basato su un discendente.
Il meglio che posso offrire e suggerire è un approccio jQuery:
$(document).ready(
function() {
$('.givenClassName').parent().addClass('something');
}
);
questo trova l'elemento con il givenClassName
e poi seleziona suo elemento genitore e aggiunge la classe something
a quell'elemento.
@Blaenk suggerisce un approccio alternativo, che è più versatile (il suo approccio non richiede che l'elemento antenato sia il genitore dell'elemento che si sta selezionando).
Ovviamente altre librerie JS, e JS tutto da solo, possono ottenere lo stesso effetto, anche se non posso offrire un consiglio particolare, dato che sto solo familiarizzando con JS e principalmente con jQuery (perché sì, io am vergognarsi di me stesso ...).
+1, e hai un preventivo unclosed nel tuo esempio di codice. –
@Jeff Rupert, grazie per il +1 e la correzione (modificata per correggere) =) –
Haha, sono sulla stessa barca per quanto riguarda Javascript e jQuery. Ho letto alcuni libri per essere aggiornato. Javascript: The Good Parts e jQuery in Action, Seconda edizione –
ul li {
/* styles */
}
È questo che stai chiedendo?
no. ho bisogno di impostare lo stile per ul – akonsu
No. CSS Cascade non consente questo tipo di selettore.
La soluzione migliore in questo caso sarebbe quella di modificare il DOM con JavaScript o di modificare il codice HTML risultante per aggiungere classi ai tag ul
.
Per quanto ne so, questo purtroppo non è possibile con i CSS.
Se è possibile utilizzare Javascript, jQuery ha un buon modo per farlo utilizzando il metodo closest()
. Il numero documentation elenca addirittura un esempio molto simile al tuo: selezionando un file che ha un codice di una particolare classe.
$("li.some-class").closest("ul");
Perdonami se questo non è il modo migliore per farlo in jQuery. In realtà sono nuovo di jQuery e questo è uno dei metodi che ho imparato finora e mi è sembrato appropriato.
+1 per un approccio jQuery più versatile (rispetto al mio). –
possibile duplicato di [selettore padre CSS] (http://stackoverflow.com/questions/1014861/css-parent-selector) –
sì, è un duplicato. grazie – akonsu