在jQuery中动态推送/创建元素,然后立即循环添加HTML
Pushing/Creating elements dynamically in jQuery and then immediately looping through to append HTML
我试图在一个jQuery片段中定义一个区域,方便用户更改。最终目标是用户定义值,但是jQuery将从列表中创建对象。
我从这个简单的HTMLdiv开始:<div class="slider-container"></div>
后面是js的概念:
var newSlides = [];
$(".slider-container").each(function(){
newSlides.push({
image: {
url: "http://placekitten.com/960/400",
title: "Sample Title 1",
subtitle: "Sample Subtitle 1"
},
image: {
url: "http://placekitten.com/961/401",
title: "Sample title 2"
};
});
});
我希望它能够获取这些值并执行如下操作:
var index = 1;
$("slider-container").append(
$("<div/>", {class: "slide s-" + index++})
.append($("<img/>, {src: "url-from-above"}))
.append($("<div/>, {class: "slide-titles"})
.append($("<h2/>, {class: "title").text("text-from-above))
.append($("<h3/>, {class: "subtitle").text("text-from-above))))
所以最后的结果是:
<div class="slider-container">
<div class="slide s-1">
<img src="http://placekitten.com/960/400 />
<div class="slide-titles">
<h2>Sample Title 1</h2>
<h3>Sample Subtitle 1</h3>
</div>
</div>
<div class="slide s-2">
<img src="http://placekitten.com/961/401" />
<div class="slide-titles">
<h2>Sample Title 2</h2>
</div>
</div>
</div>
目标是用户只需要定义值,而不必担心定义HTML或将东西放在正确的位置。任何人都可以轻松编辑
我同意其他人的看法,像Mustache这样的模板引擎会很有用。如果你想直接使用jQuery:
for(i=0; i<newSlides.length; i++) {
var slider = $('.slider-container');
var slide_data = newSlides[i];
var slide = $('<div class="slide s-' + i + '"/>').appendTo(slider);
$('<img src="' + slide_data.url + '" />').appendTo(slide);
var titles = $('<div class="slide-titles"/>').appendTo(slide);
if(slide_data.title) {
$('<h2>' + slide_data.title + '</h2>').appendTo(titles);
}
if(slide_data.subtitle) {
$('<h3>' + slide_data.subtitle + '</h3>').appendTo(titles);
}
}
对于上面的代码,您需要修改您的push()
语句,以便它直接将对象压入数组,而不是压入由目标对象组成的对象。例如
var newSlides = [];
newSlides.push(
{
url: "http://placekitten.com/960/400",
title: "Sample Title 1",
subtitle: "Sample Subtitle 1"
},
{
url: "http://placekitten.com/961/401",
title: "Sample title 2"
}
);
相关文章:
- Handlebars访问第一个项目,然后访问后面的每个项目(在每个循环中)
- 获取表中每行的一列的内容,然后循环访问每个内容
- 在Django中,可以在视图中创建一个包含js的变量,然后在循环模板标记中使用它
- 使用函数for循环遍历对象以更改值,然后返回结果
- 尝试将对象添加到存储阵列中,然后通过循环将它们写出
- 运行循环,然后重置并再次运行它
- 如何让 setTimeout 函数运行,然后停止使用循环
- 增加值直到限制然后减少循环
- 在每个循环上完成异步调用,然后转到下一个节点 js
- 从数组中快速打印对象,然后循环
- 使用$.post()将PHP数组发送到jQuery,然后循环使用这些值
- 单击时将值推送到数组,然后循环添加数组值.Javascript
- 重复数字达到极限,然后循环它
- 获取所有已选中的复选框,然后循环使用它们
- 蓝鸟:链.然后循环处理
- jQuery-循环通过TD宽度,然后循环通过TH并应用TD宽度
- HTML自动播放一个视频然后循环另一个
- 从数组中获取随机元素,显示它,然后循环-但永远不要跟在同一个元素后面
- 首先循环选定的标签,然后循环所有标签
- AJAX-等待数据追加,然后循环下一个