Lorsque vous utilisez les sélecteurs jquery je suis tombé à quelque chose de bizarre.sélecteurs CSS/JQuery comportement étrange
Mon HTML:
<ul id="unordered-list">
<li>
<img src="https://www.google.com/images/srpr/logo4w.png" width="40" height="40"/>
<input type="text" size="40"/>
<input type="text" size="40"/>
</li>
<li>
<img src="https://www.google.com/images/srpr/logo4w.png" width="40" height="40"/>
<input type="text" size="40"/>
<input type="text" size="40"/>
</li>
</ul>
Maintenant, si je devais choisir la première entrée dans la première entrée pour ajouter un peu css je un utiliserais ceci:
$("#unordered-list li:nth-child(1) input:nth-child(1)").css("border", "5px solid red");
Maintenant, je pense que c'est ce que le navigateur ferait:
1. Le navigateur sélectionne l'élément #unordered-list
.
2. Le navigateur sélectionne alors le premier élément li.
3. Le navigateur sélectionne alors le premier élément d'entrée qu'il trouve.
Mais cela n'arrive pas, il ne sélectionne rien. C'est parce qu'il essaie réellement de sélectionner le img car c'est le premier enfant.
regardant la documentation de JQuery nième: enfant:
http://api.jquery.com/nth-child-selector/
Ils font la même chose:
<script>$("ul li:nth-child(2)").append("<span> - 2nd!</span>");</script>
Voici un travail jsFiddle démontrant la question:
http://jsfiddle.net/uQYMz/
Cette juste ne semble pas logique, je me attends entrée: nième enfant (1) pour sélectionner la première des entrées disponibles. Est-ce un comportement voulu et si oui, y a-t-il une raison pour laquelle ce comportement est choisi?
Et': premier-enfant' dans lieu de ': nth-child (1)' ... – BoltClock
@BoltClock, histoire vraie. – e1che