Javascript - HTML 连接的其他方法
Javascript - Alternative to HTML concatenation
可能的重复项:
JavaScript:我应该如何生成大量的HTML?
我觉得做这样的事情真的很愚蠢:
var html = '<div><ul>';
for(var i=0; i<10; i++) {
html += '<li>' + i + '</li>';
}
html += '</ul></div>';
$("body").html(html);
有没有办法使用模板而不是像那样连接字符串?我知道可以选择使用 JS 填充现有元素并在需要显示时更改显示以阻止,但这似乎相当黑客和烦人,尤其是在使用循环时。
我也对任何前端模板/框架建议持开放态度。
这个问题可能以前问过,但我找不到任何关于SO的线索。任何见解将不胜感激。
编辑:
澄清一下,我会对这样的事情感兴趣:
// li_list.haml
%div
%ul
- for i in #{range}
%li i
// app.js
// require li_list.haml with {range: 10}
您绝对可以使用模板,但这需要外部库。
就我个人而言,我喜欢 KnockoutJs,它具有模板、双向绑定到 dom 和其他好东西。 这是他们关于模板的演示
我知道
它没有被标记,但看到你的问题似乎正在使用它:jQuery 在他们的 API 文档中列出了一个tmpl
插件。
对于非jquery解决方案,Jon Resig有一篇关于他的微模板技术的好文章。
最后,如果你只是连接一堆东西,数组会创造奇迹:
而不是:
var html = '<div><ul>';
for(var i=0; i<10; i++) {
html += '<li>' + i + '</li>';
}
html += '</ul></div>';
$("body").html(html);
您可以使用:
var html,
i;
html = ['<div><ul>'];
for (i = 0; i < 10; i += 1) {
html.push('<li>', i, '<li>')
}
html.push('</ul></div>');
$('body').html(html.join(''));
没有显着差异,但至少您可以执行数组操作。
尝试原型模板。
您可能还想尝试闭包 JS 模板。
相关文章:
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- 如何从其他方法访问Angular.js$scope
- 停止内部事件处理程序冒泡的其他方法,jQuery
- 有没有办法将选择器返回到元素?是$(这个)还是其他方法
- 使用一个方法在c#中启动其他方法
- 使用appendchild或其他方法向ul添加html代码而不是纯文本
- 用Javascript或其他方法通过语音读取整个HTML页面(离线)
- 有没有其他方法可以在远程服务器上包含php文件?除了<?php include()>
- 为什么不't我的Javascript,如果其他方法有效的话
- 有没有办法使用画布或其他方法在 HTML 中制作圆形图像
- 无法获得其他方法是否可以在 HAML JavaScript 中正常工作
- 有没有其他方法可以在 jquery 中删除类
- 获取父对象并通过介于两者之间的窗体传递给其他方法
- 使用 jQuery 工具提示插件(或任何其他方法)显示带有 PHP 对象属性的工具提示
- 除了通过JavaScript追加之外,还有其他方法可以将动态数据添加到jQuery移动页面中吗?
- 有没有其他方法可以选择HTML元素
- 如何使用javascript或其他方法清除IE DNS缓存
- 是否可以使用 JQuery 或其他方法在两个浏览器窗口之间拖放一些内容
- 其他方法使用 setInterval 调用的方法无法访问 js 中的对象属性
- 在默认情况下将可枚举设置为 false 的 JS 中创建对象属性的其他方法是什么