【问题标题】:jQuery .eq(x) returns different element in IE than in FF/ChromejQuery .eq(x) 在 IE 中返回与 FF/Chrome 中不同的元素
【发布时间】:2011-03-17 20:43:46
【问题描述】:

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

例如,

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

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

这是有问题的标记:

<div>
  <span>
    <input onclick="player.search.Groupings($(this).parent().children().eq(2).text(), $(this).parent().children().eq(0).is(':checked'));" type="checkbox"></input>
    <span>Fake Initiative A</span><span>1</span>
  </span>
  <span>
    <input onclick="player.search.Groupings($(this).parent().children().eq(2).text(), $(this).parent().children().eq(0).is(':checked'));" type="checkbox"></input>
    <span>Initiative B Not Real</span><span>2</span> </span>
</div>

(我去掉了属性、内联 css 等——如果没有这些,同样的事情也会发生)。

有更好的方法吗?

【问题讨论】:

  • 请发布您的标记和 jQuery 选择器。
  • 请附加有问题的html代码和您使用的选择器

标签: jquery cross-browser selector


【解决方案1】:

我应该认为这与空文本节点有关,Firefox 不会注册 标记之间的空格,而 IE 会,所以对于 FF 第二个节点将是 标记 (),因为它将是文本节点 (-empty text node-)。

编辑:

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

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

虚假倡议 A1 倡议 B 不真实2

那么它应该按预期工作。

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

标题在这里!
正文>
猜你喜欢
  • 2011-11-02
  • 1970-01-01
  • 2011-08-23
  • 2013-12-31
  • 1970-01-01
  • 2011-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多