0

我有一个网站,我需要在其中生成表单字段集模板并将其保存在隐藏元素中。当用户需要向表单添加更多字段集时,会读取模板并将其插入到现有表单的底部。为了确保模板不会干扰 jQuery 选择器,我已经分别用 %LT!% 和 %QOT!% 替换了所有小于号和引号,并且想法在模板时再次用正确的符号替换它们正在插入,但由于某种原因它不起作用。

在代码中显示情况:

HTML:

<div id="test">
    %LT!%span id=%QOT!%testing%QOT!%>Hello%LT!%/span>
</div>

<span id="target"></span>

JS:

htmlstring = $("#test").html();
htmlstring = htmlstring.replace(/%LT!%/g, '<');
htmlstring = htmlstring.replace(/%QOT!%/g, '"');
$("#target").before(htmlstring);

只要第二行有小于号,它就不会起作用。将任何其他字符放在那里就可以了,但是这样绝对不会将任何内容添加到页面中。这里发生了什么?

jsFiddle 示例

4

1 回答 1

1

为了简化事情,您应该使用正确的 HTML 编码实体。div此外,您可以将模板存储在数据属性中,而不是隐藏。

<!-- language: lang-js -->    
<span id="target" data-template="&lt;a href=&quot;#test&quot;&gt;test&lt;/a&gt;"></span>

<script>
    htmlstring = $("#target").data('template');
     $("#target").before(htmlstring);
</script>
于 2013-10-06T22:22:17.893 回答