为每个对象创建包装,并将它的键+值插入到包装jQuery中

时间:2017-07-20 11:59:08

标签: javascript jquery

如何包装每个对象,然后在每个创建的包中插入对象的索引和值?

我已尝试使用此代码实现此目的:

$.ajax({
  url: "some url",
  type: "GET",
  success: function(data) {
    var data = data._embedded.video;
    $.each(data, function (index, value) {
      $('.list').append('<div class="video_wrap ' + value.id + '"></div>');
      $.each(value, function (i, v) {
        $('.video_wrap').append('<div>' + i + ': ' + v + '</div>');
      });
    });

  }
});

必须如下:

<div class="list">
 <div class="video_wrap 497">
  <div>id: 497<div>
  <div>name: smth<div>
 </div>
 <div class="video_wrap 514">
  <div>id: 514<div>
  <div>name: smth<div>
 </div>
</div>

但我得到了这个:

<div class="list">
 <div class="video_wrap 497">
  <div>id: 497<div>
  <div>name: smth<div>
  <div>id: 514<div>
  <div>name: smth<div>
 </div>
 <div class="video_wrap 514">
   <div>id: 497<div>
   <div>name: smth<div>
   <div>id: 514<div>
   <div>name: smth<div>
 </div>
</div>

非常感谢!

1 个答案:

答案 0 :(得分:0)

您的第二个循环更新.video_wrap的所有实例:

$('.video_wrap').append(

您可以对其进行更改,使其仅更新您感兴趣的内容:

$('.video_wrap.' + value.id).append(

或者,保留新video_wrap的记录并直接使用:

$.each(data, function (index, value) {
  var wrap = $('<div class="video_wrap ' + value.id + '">').appendTo(".list");
  $.each(value, function (i, v) {
    wrap.append('<div>' + i + ': ' + v + '</div>');
  });
});

此处,appendTo将返回附加的项目,wile append将返回父项。