Jquery脚本被视为span

时间:2014-06-10 05:41:25

标签: jquery

我对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>

但是它将脚本作为第一个跨度返回,但我无法修改代码以获取第二个和第三个子节点,因为上面的示例代码是在循环和代码的其他部分中复制的,在跨度中没有脚本。如何在没有循环但只有正确的选择器的情况下实现这一目标?

2 个答案:

答案 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());

DEMO

答案 1 :(得分:3)

使用nth-of-type

$j(function() {             
    alert($j("#sp1 span:nth-of-type(1)").text());
    alert($j("#sp1 span:nth-of-type(2)").text());
});

Fiddle