0

DOM の再構築 (.append() を使用) 後、(現在の高さに応じて) 最短の div を見つけることに問題があります。json 配列からデータを次々に追加したいのですが、常に現在の最短の div に追加します (高さを均等にするため)。これは私のHTMLがどのように見えるかです:

<div class="article_column" id="data0"></div>
<div class="article_column" id="data1"></div>
<div class="article_column" id="data2"></div>
<div class="article_column" id="data3"></div>

そして、これは私が現在jqueryで行っていることです:

 $.each(data, function (i, column) {
     var shortest = [].reduce.call($(".article_column"), function (sml, cur) {
         return $(sml).height() < $(cur).height() ? sml : cur;
     });
     $(shortest).append(column.html);
 });

これはちょっとうまくいっているようですが、最初の 4 つの要素についてのみです。その後、ほとんどのデータは 1 つの div にのみ追加されます。明らかに、これは私が探しているものではありません。私のコードに何か問題がありますか? DOM がそれほど速く更新されていないため、間違った div が選択されていると思われます。何か案は?

4

2 に答える 2

1

これが最善の方法かどうかはわかりませんが、これが私がすることです

var shortest = null, height = 100000;

$.each($('.article_column'), function(k, v){
  if(parseInt($(v).height()) < height) {
      shortest = $(v);
      height = $(v).height();
  }
});

デモ

于 2013-11-08T14:52:39.173 に答える