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>