2017-02-09 15 views
0

私はidをjsonから取得し、次にidにspanが含まれているかどうかを確認してから追加しますが、そうではありません作業は常に加えると、私はあなたのコードが正しいと思いますが、より多くの各スパンのデータは、jsonレスポンスからidとcheck idを取得します

のjQuery

e.results.forEach(function(e) { 
    var name = e.name; 
    var id = e.id; 
    if ($(".visitors span").length) { 
     $('.visitors span').each(function() { 
      var data_id = $(this).attr('data-id'); 
      if (data_id != id) { 
       $(".visitors").append("<span data-id='" + id + "'>" + name + "</span>"); 
      } 
     }); 
    } else { 
     $(".visitors").append("<span data-id='" + id + "'>" + name + "</span>"); 
    } 
}); 
+0

あなたがすでに持っているidと同じidのIDを追加しています。そのため、.eachにもそのIDが含まれていて、そのIDのスパンは無制限になります。 –

+0

私はそれを取得しません... –

+0

"$( '。visitors span')を反復していますが、結果から受け取ったIDの.visitorsに新しいスパンを追加していますので、何度も何度も... –

答えて

1

を追加することが、提案がされています。代わりにあなたが追加しているスパンをループのスパンであれば、単にチェックdata-idが存在し(CSS Attribute-Equal Selectorを使用)、次のような新しいスパンを追加しない場合:

e.results.forEach(function(e) { 
    var name = e.name; 
    var id = e.id; 

    var $span = $(".visitors span[data-id = '" + id + "']"); // select all the spans that have the data-id equal to id 
    if (!$span.length) { // if there is none 
     $(".visitors").append("<span data-id='" + id + "'>" + name + "</span>"); // then add a new one 
    } 
}); 
+0

私は十分にスマートではありません...ありがとうございます! –

+0

はい良いgood..andはるかに速く –

+0

あなたは歓迎です! –

関連する問題