在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会改变我设置的内容?这是一些深奥的规范的一部分,还是一个错误?
答案 0 :(得分:5)
在<a>
周围包裹<div>
是无效的HTML。也许Firefox正在为你修复它并返回有效的HTML?
答案 1 :(得分:3)
但如果你使用.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;。