简体   繁体   English

使用 jQuery 动态创建元素

[英]Dynamically create elements with jQuery

I have a little problem to create elements with jQuery.我在使用 jQuery 创建元素时遇到了一个小问题。 It's more a algorithm problem than a jQuery problem.它更像是一个算法问题而不是一个 jQuery 问题。

I have an Javascript Array in entry : jsonObj.news I would like to create "x" lines with 3 elements of class item .我在条目中有一个 Javascript ArrayjsonObj.news我想用 3 个类item 的元素创建“x”行。

Today, the following code create 3 lines but it's not dynamically, and the total length of the array is not threated.今天,下面的代码创建了 3 行,但不是动态的,数组的总长度没有受到威胁。

How can i adapt the code to do that ?我怎样才能修改代码来做到这一点?

// Model for create div news element

function appendModel(news, lineToAppend) {
    var model = '<div class="item"><h2 id="item_text"><span id="titleNews">' + news.title + '</span><span id="urlHidden">' + news.link +'</span></h2><div class="img-div"><img id="item_img" src="' + news.img + '" /></div></div>';
    lineToAppend.append(model);
}

// Build first line
var line1 = $("<div id=\"line1\"></div>");
for (var i=0 ; i<3 ; i++) {
    appendModel(jsonObj.news[i], line1);
}

// Build second line
var line2 = $("<div id=\"line2\"></div>");
for (var i=3 ; i<6 ; i++) {
    appendModel(jsonObj.news[i], line2);
}

// Build third line
var line3 = $("<div id=\"line2\"></div>");
for (var i=6 ; i<9 ; i++) {
    appendModel(jsonObj.news[i], line3);
}

$(line1).appendTo($("#content"));
$(line2).appendTo($("#content"));
$(line3).appendTo($("#content"));

Are you looking for something like this:你在寻找这样的东西:

// Unchanged from your example
function appendModel(news, lineToAppend) {
    var model = '<div class="item"><h2 id="item_text"><span id="titleNews">' + news.title + '</span><span id="urlHidden">' + news.link +'</span></h2><div class="img-div"><img id="item_img" src="' + news.img + '" /></div></div>';
    lineToAppend.append(model);
}

// New stuff
var lineCount = 3;
for (var j=0; j<lineCount; j++) {
    var line = $('<div id="line'+(j+1)+'"></div>');

    // j*lineCount gives the values 0, 3, 6 to start pull from your news array
    for (var i=0; i<3 ; i++) {
        appendModel(jsonObj.news[j*lineCount + i], line);
    }

    $(line).appendTo($('#content');
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM