Javascript jqueryxmlns="&引用;在Chrome中导致格式问题的属性
我正在使用jQuery动态构建一个项目表。下面是代码的简化版本,它再现了我遇到的问题。通过迭代一个简单的JSON对象,我尝试使用jQuery的Javascript jqueryxmlns="&引用;在Chrome中导致格式问题的属性,javascript,jquery,html,Javascript,Jquery,Html,我正在使用jQuery动态构建一个项目表。下面是代码的简化版本,它再现了我遇到的问题。通过迭代一个简单的JSON对象,我尝试使用jQuery的append()方法为itemdiv中的每个项添加一行 JSON: JavaScript: Firefox和Edge似乎没有显示内容的问题,但在Chrome中,“第一项”和“第二项”显示在同一行上,中间没有空格,如下所示: 第一项第二项 而在Firefox和Edge中,它们在各自的行中正确显示为: 第一项 第二项 我的问题是,为什么在添加xmlns属性时格
append()
方法为item
div中的每个项添加一行
JSON:
JavaScript:
Firefox和Edge似乎没有显示内容的问题,但在Chrome中,“第一项”和“第二项”显示在同一行上,中间没有空格,如下所示:
第一项第二项
而在Firefox和Edge中,它们在各自的行中正确显示为:
第一项
第二项
我的问题是,为什么在添加xmlns
属性时格式会丢失?,也许更重要的是,如何首先防止添加xmlns
属性?
编辑:
这是在加载文档时运行上述JavaScript后,从document inspector的视图中生成的源代码的外观:
有什么线索可以说明是什么在添加它们吗?这不是来自JQuery,至少在正常情况下不是。您可能需要添加关于其他正在使用的库的注释。这是一个静态网页,除了对jQuery 3.4.1的引用和对Bootstrap 4.4.1 css的样式表引用之外,没有其他库。请检查您的DOCTYPE标记,是XSLT吗?如果是这样,那可能就是问题所在。无法复制,Google Chrome版本79.0.3945.88(官方版本)(64位)@Lemonseed是的,就是这样,正如我所说,元素
不是由createMenu()
函数创建的。正如您所提到的,它是静态内容,该元素已经按原样存在于HTML代码中。您可以删除属性:$(“#菜单”).removeAttr(“xmlns”)代码>
var menuTemplate = [
{
"label":"First Item",
},
{
"label":"Second Item",
}
];
function createMenu() {
$.each(menuTemplate, function(index, item){
var row = $('<div class="row"></div>');
var label = $('<div class="col-sm">' + item['label'] + '</div>');
row.append(label);
$('#menu').append(row);
});
}
<body style="background:#ffffff">
<div id="menu" class="container"></div>
</body>
<div xmlns="http://www.w3.org/1999/xhtml" id="menu" class="container">
<div xmlns="" class="row">
<div class="col-sm">First Item</div>
</div>
<div xmlns="" class="row">
<div class="col-sm">Second Item</div>
</div>
</div>