javascript - 通过javascript动态添加html时分离Javascript和Html

标签 javascript jquery html ajax dom

我目前正在为列表应用程序构建一个非常动态的表,它基本上将通过 AJAX 执行基本的 CRUD 功能。

我想做的是将视觉设计和 javascript 分开,这样我就可以在不接触 JS 端的情况下更改设计端。这只适用于设计大致相同的情况(我想用它来快速制作原型(prototype))

这是一个例子。

<table>
<tr><td>record-123</td><td>I am line 123</td><td>delete row</td></tr>
<tr><td>record-124</td><td>I am line 124</td><td>delete row</td></tr>
<tr><td>record-125</td><td>I am line 125</td><td>delete row</td></tr>
<tr><td>add new record</td></tr>
</table>

现在,当我添加一条新记录时,我想插入一行新的 html,但我不想将此 html 放入 javascript 文件中。

我正在考虑在页面上靠近表格的位置创建这样一行。

<tr style='visble:none;' id='template-row'><td>record-id</td><td>content-area</td><td>delete row</td></tr>

当我要添加新行时,我在页面中搜索带有 id=template-row 的标签,然后抓取它,对其进行字符串替换,然后将其放在正确的位置页面。

只要设计没有发生根本性的变化,并且我保持占位符字符串不变,这意味着可以在不接触 js 的情况下快速修改设计。

任何人都可以就这样的方法提出任何建议吗?

最佳答案

看看John Resig's Micro-Templating .

使用:

<script type="text/html" id="row_tmpl">
    <tr><td><%=id%></td><td><%=content%></td><td>delete row</td></tr>
</script>

<script type="text/javascript" src="templating.js"></script>
<script type="text/javascript">
    (function(){
       var dataObject = {"id":"myid","content":"some content"};
       var html = tmpl("row_tmpl", dataObject);
       // do whatever you want with the new HTML...
    }());
</script>

注意事项
由于一些 SO 用户理所当然地担心使用这种方法的 XSS 攻击,我只想指出微模板功能提供了规避问题的方法。 <% %> 中的任何 javascript标签将被执行。因此,如果您有清除恶意内容输入的功能,您可以在这些 <% %> 中调用它标签。

关于javascript - 通过javascript动态添加html时分离Javascript和Html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2629623/

相关文章:

javascript - 发送带有多个附件和 JavaScript Ajax 请求的电子邮件

javascript - 追加行添加自动完成 jQuery

javascript - jQuery 中的匿名函数语法

javascript - 文件上传在 extJS 中隐藏文本字段

html - 为什么表格的列这么宽?

javascript - 如何检测正在拖动哪个div

javascript - 图片边框不显示

javascript - 输出JSON的javascript中的递归函数

javascript - Fullcalendar - 较大的日期不应拖动到较小的日期后面

javascript - 使相同的按钮播放/暂停 html5 视频