Javascript chrome&;中的JQuery insertAfter;safari会将内容作为字符串插入
我使用jQuery将行动态插入表中。行本身是一个(文本)模板,其中的一些内容被替换,然后被“浇铸”到jQueryDOM节点。虽然这在Firefox和IE中运行良好:Javascript chrome&;中的JQuery insertAfter;safari会将内容作为字符串插入,javascript,jquery,html,google-chrome,dom,Javascript,Jquery,Html,Google Chrome,Dom,我使用jQuery将行动态插入表中。行本身是一个(文本)模板,其中的一些内容被替换,然后被“浇铸”到jQueryDOM节点。虽然这在Firefox和IE中运行良好: jQuery(jQuery.parseHTML(node)).insertAfter("#imgTable tr:last()"); Chrome和Safari不会插入节点,而是将HTML作为字符串插入。这样我就不会得到一行代码,而是一个完整的html源代码块…这是一个用户体验灾难:) 非常简单的复制: …我已经发现错误的来源
jQuery(jQuery.parseHTML(node)).insertAfter("#imgTable tr:last()");
Chrome和Safari不会插入节点,而是将HTML作为字符串插入。这样我就不会得到一行代码,而是一个完整的html源代码块…这是一个用户体验灾难:)
非常简单的复制:
…我已经发现错误的来源是我将模板存储在
标记中。我必须这样做,因为我知道的所有其他标记都会被解释,所以大多数浏览器要么删除
和
标记,要么修改内容
将模板存储在变量中也不是一个选项,因为模板已经包含一些后端生成的数据。
因此,实际的问题是:如何让webkit浏览器在插入数据后解释数据?或者:否则我应该如何存储模板?HTML代码-
<table id="table">
<tr>
<th>bsp.</th>
</tr>
</table>
<noscript id="tpl" style="display:none">
<tr><td>%VAR%</td></tr>
</noscript>
JSFiddle-
此解决方案在所有浏览器中都运行良好。这里的实际目标是什么?您的解释不清楚,您在小提琴中演示的方法似乎有点异乎寻常。解析到模板中的内容部分是服务器端内容,部分是客户端内容,模板本身是交付的html的一部分,这使得访问变得很容易。@Mr.Manhattan请看一下我在答案部分发布的答案。使用“use.text()而不是.html()”就足够了,不过谢谢,这很好。
var node = $("#tpl").text();
node = node.replace("%VAR%","test");
$($.parseHTML(node)).insertAfter("#table tr:last()");