将元素动态附加到另一个动态元素

时间:2015-04-30 19:16:22

标签: jquery arrays json object append

我想将变量img附加到figure元素。一切都是从JSON文件动态加载的。除了我必须将元素附加到现有的$wrap

之外,一切似乎都运行得很好
for (i = 0; i < arr.length; i++) {
  var url = arr[i].url,
      img = $('<img src="'+ url +'">').load(function(){
          var imgW = this.width,
              imgH = this.height;

          img.attr({
              width: imgW,
              height: imgH
          });
      });

  $wrap.append( '<figure>' + img + '</figure>' );
}

当我执行$wrap.append( img );时,一切都按预期进行。该元素将附加到$wrap问题是我不必将它们附加到$wrap但是每个(根据数组长度)必须附加到其正确的<figure>标记因此,当我执行此代码时:$wrap.append( '<figure>' + img + '</figure>' );这是我想要的代码,输出为:<figure>[object Object]</figure>

有什么建议吗? 如何将动态创建的元素附加到其他动态创建的元素?

您可以找到代码here

here

1 个答案:

答案 0 :(得分:2)

试一试:

$wrap.append($('<figure/>').append(img));

'<figure>' + img + '</figure>'string + Object + string。 Js将结果作为字符串返回,这意味着它将调用.toString()函数将每个不是字符串的变量转换为字符串。 img是一个jQuery对象而不是字符串,因此将调用img.toString(),其结果为[object Object]