我們使用jQuery來生成XML片段,然後使用html()
函數將其轉換爲字符串。但正如我們剛剛發現的那樣,如果有人不知道,那麼在IE中實現的JavaScript函數就會被破壞,破壞,破壞。基本上,它會利用一些標籤,在「幫助」(在我們的例子中)給其他人增加屬性,而且通常不會做正確的事情。讓jQuery與另一個庫一起工作(XML解析)
我想用這樣的事情來生成XML字符串,而不是:
http://www.stainlessvision.com/jquery-html-vs-innerxhtml
然而,該庫將無法很好地與jQuery玩開箱,例如:
var $dummyRoot = $('<dummyroot/>'); // since html() doesn't generate the outer element
var $foo = $('<foo></foo>');
var $font = $('<font ></font >');
$foo.append($font);
$dummyRoot.append($foo);
var $s = innerXHTML($dummyRoot); // <-- Doesn't work
我認爲它想要更多的W3C DOM-ish對象。
如何讓jQuery與此innerXHTML()
函數對話;或者,也可以使用另一個函數(也許內置於jQuery或jQuery插件中))?
編輯:跟進DDaviesBrackett的問題。我的XML中也有一個「body」元素;看看它如何拾取CSS樣式(而不僅僅是一個元素)。
是否存在一個不成文的規則,在元素名稱爲body,font,head等的DOM內部不生成XML?
var $dummyRoot = $('<dummyroot/>');
var $foo = $('<foo></foo>');
var $body = $('<body></body>');
var $font = $('<font></font>');
$body.append($font);
$foo.append($body);
$dummyRoot.append($foo);
var $s = innerXHTML($dummyRoot[0]);
// $s equals "<foo><body bottommargin="15" leftmargin="10" rightmargin="10" topmargin="15"><font size="+0"></font></body></foo>"
見更新我的問題函數名。 – 2010-08-06 23:55:56