gentlemanhua 2017-08-03
Jquery在创建标签元素的语法为:
$('<标签>');   在高级浏览器中,会正确执行,但在IE9等浏览器中,会被解析为xml文件,并带上xml声明:1. 浏览器不认识的空标签时,如:
$('<otherTags>')[0].outerHTML;
$('<otherTags/>')[0].outerHTML;   会被JQuery误认为是xml文件:<?XML:NAMESPACE PREFIX="PUBLIC" NS="URN:COMPONENT"/> <othertag></othertag>
遇到这种情况时,我们可以在空标签元素外包一个<html>,如
$('<html><otherTag>')[0].outerHTML;
$('<html><otherTag/></html>')[0].outerHTML;   可以正确解析:<othertag> <othertag></othertag>
2.标签中包含xmlns属性时,如:
$('<otherTags xmlns="jabber:client">content</otherTags>')[0].outerHTML;   也会被JQuery误认为是xml文件:<?XML:NAMESPACE PREFIX="[default] jabber:client" NS="jabber:client" /> <othertags xmlns="jabber:client">content</othertags>这时如果再简单的在标签外套一个html标签已经行不通了,我们只能曲线救国,那就是在创建时去掉xmlns属性,然后使用attr函数再追加上这个属性:
var tag = $('<otherTags>content</otherTags>');
tag.attr({xmlns:'jabber:client'});
console.log(tag[0].outerHTML);   控制台打印结果正确结果:<othertags xmlns="jabber:client">content</othertags>