Question de sélection CSS3 pour tous, mais sélectionnez d'abord


91

Avec le balisage suivant, je veux qu'un sélecteur CSS sélectionne tout sauf le premier menu de sélection dans chaque div d'options - dont il peut y en avoir beaucoup:

<div class="options">
    <div class="opt1">
        <select title="Please choose Warranty">
            <option value="">Select Waranty</option>
            <option value="1">1 year guarantee</option>
            <option value="2">3 year guarantee</option>
        </select>
    </div>
    <div class="opt2">
        <select title="Please choose Color">
            <option value="">Select Color</option>
            <option value="1">Red</option>
            <option value="2">Blue</option>
        </select>
    </div>
    <div class="opt3">
        <select title="Please choose Size">
            <option value="">Select Size</option>
            <option value="1">Small</option>
            <option value="2">Big</option>
        </select>
    </div>
</div>

J'utilise cela dans Prototype qui a un support de sélecteur css3 presque complet, donc pas concerné par le support du navigateur.

Le sélecteur initial serait quelque chose comme:

div.options div select

J'ai essayé quelques variantes nth-childet je :not(:first-child)n'arrive pas à le faire fonctionner.

Réponses:



48

Vous devez sélectionner l'option divs au lieu de selects lors de l'utilisation :not(:first-child), car chaque selectest le premier (et unique) enfant de son parent div:

div.options > div:not(:first-child) > select

Une alternative à :not(:first-child)est d'utiliser :nth-child()avec un décalage de départ de 2, comme ceci:

div.options > div:nth-child(n + 2) > select

Une autre alternative est avec le combinateur général des frères et sœurs ~(qui est pris en charge par IE7 +):

div.options > div ~ div > select

merci pour les informations supplémentaires, a accepté l'autre réponse car elle était également correcte et est arrivée en premier.
robjmills

1
Au cas où vous seriez préoccupé par les IE plus anciens, j'ai ajouté une troisième solution.
BoltClock

0

.options > div:nth-child(n+2) select

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.