2010-08-05 25 views
2

在IE 8中,jQuery的作爲我希望:DIV嵌套在給出奇怪的innerHTML結果在FireFox

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

在Firefox中:

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

它把周圍的東西,我想錨。有誰知道爲什麼會發生?

編輯:用普通的javascript(即設置innerHTML)來設置會導致問題。所以我想我真正的問題是:爲什麼Firefox會改變我設置的內容?這是一些深奧的規範的一部分,還是它的錯誤?

回答

5

圍繞<div>圍繞<a>是無效的html。也許Firefox正在爲您即時修復它並返回有效的html?

+0

也許,但它接受靜態html中的as裏面的div就好了。我想這不是不可能的,它有動態HTML額外的固定的東西,但它似乎很奇怪。 – Xodarap 2010-08-05 17:35:59

+0

我不是故意說firefox會編輯你的html。更多的是,它可能會解釋HTML中的HTML不同於靜態html的建議。 – hookedonwinter 2010-08-05 19:22:29

+1

即使它在某些瀏覽器中可能正常工作(IE,令人驚訝) - 我建議您嘗試使其成爲有效的HTML。當涉及到調試和驗證實施時,它會讓您的生活更輕鬆。 – MunkiPhD 2010-08-05 19:24:46

3

好吧,firefox也許知道你打破了規則。

但它不知道你做了如果你使用.append()

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

不知道是否適用於這裏(因爲我們不知道它的doctype您正在使用),但包裝一<div>圍繞<a>是HTML5完全有效的,但Firefox顯然是不加快速度上還。我猜FF4會通過

1

與Firefox 3.6.18(4.x,5.x正確渲染頁面)有相同的問題。我想到的快速和骯髒的修復是將<a>與<範圍>中的所有內容都包裹起來。