需要一个更好的解决方案来从JavaScript文件附加HTML
need a better solution to append html from javascript file
for (i = 0; i < events.length; i++) {
left_pos = (event_col[i] * xfactor * 100);
//jquery part need cleaner
$('.contain_textDiv')
.append('<div class="sample_box1" style="margin-left:' + left_pos + '%;' + 'margin-top:' + Math.round(events[i].start) + 'px; width:' + Math.floor(95 * xfactor) + '%;' + 'position: absolute; height:' + Math.round(events[i].end - events[i].start) + 'px;"><div class="sample_boxHeader">Sample Layout</div><div class="sample_box_grayText">Sample Location</div></div>');
}
这部分 JavaScript 代码将通过循环来更改当前的 html 样式并添加
<div class="sample"></div>
和
<div class="sample2"></div>
在我的 HTML 文件中,已经存在一个<div class="sample"></div>
有人有更好的解决方案来清理这部分代码吗?我真的很感激你的帮助!
不要将 DOM 元素追加为字符串,而是在 jQuery 中创建一个新元素并附加它:
var newEl = $('<div>').addClass("sample_box1").css({
'margin-left': left_pos+"%",
'margin-top': Math.round(events[i].start),
width: Math.floor(95 * xfactor)+'%',
//etc etc
});
$('.contain_textDiv').append(newEl);
有几种方法可以清理它。 一种方法是缩进代码。 你可以做的另一件事是使用 jQuery 的方法设置样式属性值(这样你就不必担心转义等等(。
$('.contain_textDiv')
.append(
$('<div>')
.addClass('sample_box1')
.css({
'margin-left': left_post + '%',
'margin-top': Math.round(events[i].start) + 'px',
width: Math.floor(95 * xfactor) + '%',
height: Math.round(events[i].end - events[i].start) + 'px'
})
.append([
$('<div class="sample_boxHeader">Sample Layout</div>'),
$('<div class="sample_box_grayText">Sample Location</div>')
])
)
(代码未经测试,但应该可以帮助您入门。
要考虑的另一件事(通常是最好的选择(是使用 JavaScript 模板引擎。 有很多可供选择。 我发现 Swig 非常高效且轻量级,当您只有基本的模板需求时,这很好。
我认为布伦南的回答是一个很好的干净方法。但是,如果出于某种原因您更喜欢将其构建为字符串,那么这里有一个我喜欢不时使用的"像 String Builder 一样使用数组"黑客的示例:
for (i = 0; i < events.length; i++) {
left_pos = (event_col[i] * xfactor * 100);
var sb = [];
sb.push('<div class="sample_box1" ');
sb.push( 'style="margin-left:' + left_pos + '%;');
sb.push( 'margin-top:' + Math.round(events[i].start) + 'px; ');
sb.push( 'width:' + Math.floor(95 * xfactor) + '%;');
sb.push( 'position: absolute; ');
sb.push( 'height:' + Math.round(events[i].end - events[i].start) + 'px;">');
sb.push('<div class="sample_boxHeader">Sample Layout</div>');
sb.push('<div class="sample_box_grayText">Sample Location</div>');
sb.push('</div>');
console.log(sb.join(''));
$('.contain_textDiv').append(sb.join(''));
}
相关文章:
- 使用压缩的JavaScript文件(不是运行时压缩)
- 如何包含特定于每个视图angularjs的javascript文件
- 将数据从javascript文件导入VB.Net页面
- Chrome加载旧版本的Javascript文件
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在visualstudio中调试web api时编辑javascript文件
- 关于引入外部javascript文件的问题&css通过https
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 在一个javascript文件中为整个网站创建标签
- 如何在定义js文件后为外部javascript文件设置变量
- 显示IIS上javascript文件(SOAP请求)的XML响应
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- 我应该将MVC视图特定的javascript文件放在哪个文件夹中
- Django'支持Javascript文件中的翻译
- MVC正在忽略我的Javascript文件
- 为什么不't我的ruby代码与javascript文件一起插入
- 在Javascript文件中获取PHP变量
- 如何在Windows中将Javascript文件编译成二进制文件