我们使用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