2010-09-07 21 views
15

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.

+1

possibile duplicato di [selettore padre CSS] (http://stackoverflow.com/questions/1014861/css-parent-selector) –

+0

sì, è un duplicato. grazie – akonsu

risposta

11

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 ...).

+0

+1, e hai un preventivo unclosed nel tuo esempio di codice. –

+0

@Jeff Rupert, grazie per il +1 e la correzione (modificata per correggere) =) –

+0

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 –

-3
ul li { 
    /* styles */ 
} 

È questo che stai chiedendo?

+0

no. ho bisogno di impostare lo stile per ul – akonsu

2

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.

4

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

+1 per un approccio jQuery più versatile (rispetto al mio). –

Problemi correlati