jquery セレクターを使用しているときに、奇妙なことに遭遇しました。
私の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>
ここで、最初の入力で最初の入力を選択して css を追加する場合、これを使用します。
$("#unordered-list li:nth-child(1) input:nth-child(1)").css("border", "5px solid red");
1. ブラウザが要素を選択します#unordered-list
。
2. ブラウザは最初の li 要素を選択します。
3. ブラウザは、最初に見つかった入力要素を選択します。
しかし、それは起こりません。何も選択しません。
これは、最初の子であるため、実際に img を選択しようとするためです。
JQuery nth:child のドキュメントを見る:
http://api.jquery.com/nth-child-selector/
彼らは同じことをします:
<script>$("ul li:nth-child(2)").append("<span> - 2nd!</span>");</script>
問題を示す動作中の jsfiddle を次に示します:
http://jsfiddle.net/uQYMz/
これは論理的ではないように思えます。input:nth-child(1) が利用可能な入力の最初のものを選択することを期待しています。これは意図された動作ですか? もしそうなら、この動作が選択された理由はありますか?