jQuery .eq(x)返回IE中与FF / Chrome中不同的元素

我使用.eq()方法选择已知元素的特定子元素。 IE和Chrome / FF中的元素索引似乎不同,因为.eq(2)根据浏览器返回不同的值。 (我正在寻找的元素在FF / Chrome中显示为.eq(2),但在IE中显示为.eq(3))

例如,

alert($(this).parent().children().eq(2).text()); 

根据浏览器显示不同的结果。

这是有问题的标记:

 
Fake Initiative A1 Initiative B Not Real2

(我删除了属性,内联css等 – 如果没有这些属性就会发生同样的事情)。

有更好的方法吗?

我认为它与空文本节点有关,Firefox不会在IE之间注册空白,标签,因为对于FF,第二个节点将是 tag( ),因为它将是文本节点( -empty text node- )。

编辑:

经过一些测试(之前的答案只是我遇到的一个常见问题所以假设它可能对你来说是一样的),问题是IE将你的结束标记作为dom中的一个元素。

如果您将代码更改为缩短结束标记,即:

 
<跨度> 假冒行动A 1 <跨度> 倡议B不真实 2

然后它应该按预期工作。

仅供参考我的整个测试脚本(仅提醒文本):

 <!DOCTYPE HTML PUBLIC“ -  // W3C // DTD HTML 3.2 Final // EN”>
 
 
     标题在这里!</ title>
     <script type =“text / Javascript”src =“http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js”> </ script>
     </script><script type =“text / Javascript”>
         $(函数(){
             $(“input:checkbox”)。bind('click',function(){
                警报($(本).parent()儿童()(2)式的.text());
             });
         }); 
     </ SCRIPT>
 </ HEAD>
 <body>
 <div>
   <跨度>
     <input type =“checkbox”/>
     <span>假冒行动A </ span> <span> 1 </ span>
   </跨度>
   <跨度>
     <input type =“checkbox”/>
     <span>倡议B不真实</ span> <span> 2 </ span> </ span>
 </ DIV>

 </ BODY>
 </ HTML>
</span></span></span></span></div></body></script>