我对jquery选择器有一个奇怪的问题,实际上它正在考虑将脚本作为span,因为以下代码不起作用:
<span id="sp1">
<script></script>
<span>1</span>
<span>2</span>
</span>
我的selctor代码是:
<script>
if(typeof jQuery != 'undefined'){
$j =jQuery.noConflict();
}
$j(function() {
alert($j("#sp1 span:nth-child(1)").text());
alert($j("#sp1 span:nth-child(2)").text());
});
</script>
但是它将脚本作为第一个跨度返回,但我无法修改代码以获取第二个和第三个子节点,因为上面的示例代码是在循环和代码的其他部分中复制的,在跨度中没有脚本。如何在没有循环但只有正确的选择器的情况下实现这一目标?
答案 0 :(得分:6)
您看到的输出是预期的输出,因为:nth-child()
将选择第n个子元素,而不管元素的性质如何。因此,在此上下文中,您应该使用:nth-of-type()
尝试,
alert($j("#sp1 span:nth-of-type(1)").text());
alert($j("#sp1 span:nth-of-type(2)").text());
答案 1 :(得分:3)
$j(function() {
alert($j("#sp1 span:nth-of-type(1)").text());
alert($j("#sp1 span:nth-of-type(2)").text());
});