使用 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) 选择第一个可用输入。这是预期的行为吗?如果是,是否有理由选择这种行为?