0

我正在尝试使用从另一个站点接收到的数据创建“提要”。它以类似对象的数组形式出现。我已经尝试了几种显示数据的方法,但一直在改变我的想法,以最好的方式来做到这一点。目前我正在使用jQuery循环遍历对象并通过嵌套为每个对象创建相同的div$(<div>).html()

这比我以前使用纯 javascript 添加新元素的方法使用的代码要少得多,但我不确定这是否是 jQuery 的最佳用途。会有更好的方法来做到这一点吗?可能为每个数组元素创建一个新的 JavaScript 对象?

编辑:这是一小段代码。它没有关闭,我已经更改了类名和变量,但这是一个粗略的想法。

$.each(feed.data, function(i, var_name) {
    $("<div>").attr({
    "id" : var_name.created_time,
    "class" : "Post"
    }).html(
        $("<img>").attr({
        "class" : "Picture",
        "src" : "some_src" + var_name.id + "/picture"
        });
4

1 回答 1

0

由于对每个单独元素进行了大量的函数调用,因此您的方法是所有可能方法中效率最低的。

尽管您可以按照建议添加模板引擎,但也值得学习如何创建 html 字符串,并且会发现将每个元素包装在其中$()并不会真正减少代码

var newHtml=[];
$.each(feed.data, function(i, var_name) {

    newHtml.push('<div id="'+var_name.created_time+'" class="Post">');
      newHtml.push('<img class="Picture" src="some_src"' + var_name.id + '/picture" />');

         /* some nested data*/
         $.each( var_name.someRepeatingElements), function(i,val){
             newHtml.push('<p>'+val.content+'</p>')
         });
     newHtml.push('</div>')
});

/* after looping all data only make one append to DOM*/

$('#someDiv').append( newHtml.join(''))

从语义上讲,这比嵌套大量$.html()调用更容易阅读

在许多没有大量复杂嵌套的情况下,创建自己的字符串比创建模板和代码来填充模板的工作量更少

于 2013-01-20T14:58:19.490 回答