嵌套在一个内部的div在FireFox中给出了奇怪的innerHTML结果

时间:2010-08-05 17:22:58

标签: javascript jquery firefox innerhtml

在IE 8中,jQuery就像我期望的那样:

$('div',$('<a><div></div></a>')).html('test').html()
"test"

在FireFox中:

$('div',$('<a><div></div></a>')).html('test').html()
"<a>test</a>"

它将锚定在我想要的周围。有谁知道为什么会这样?

编辑:使用普通javascript(即设置innerHTML)进行设置会导致问题。所以我想我真正的问题是:为什么firefox会改变我设置的内容?这是一些深奥的规范的一部分,还是一个错误?

4 个答案:

答案 0 :(得分:5)

<a>周围包裹<div>是无效的HTML。也许Firefox正在为你修复它并返回有效的HTML?

答案 1 :(得分:3)

好吧,firefox可能知道你违反了规则。

但如果你使用.append(),它就不知道你做了什么。

$('div',$('<a><div></div></a>')).html('').append('test').html(); // give you 'test'

答案 2 :(得分:1)

不确定它是否适用于此处(因为我们不知道您正在使用哪种doctype),但在<a>周围包裹<div>在html5中完全有效,但Firefox显然不符合速度还在那。我猜FF4会是

答案 3 :(得分:1)

Firefox 3.6.18(4.x,5.x正确呈现页面)存在同样的问题。我提出的快速而肮脏的修复方法是将所有内容包装在其中&lt; a&gt;与&lt; span&gt;。