1

リストのどの要素がページの一番上にあるかを把握する必要があります。私の解決策は、jQuery each を使用して要素をループし、位置を確認することです。

これは問題なく機能しますが、要素が多いとパフォーマンスが低下します。簡単な例については、このフィドルを参照してください

http://jsfiddle.net/AnfZg/3/

ここに私が気づいている奇妙なことがあります

  • 時間がかかるのは position.top() への最初の呼び出しです
  • Chrome (ほぼ 3 秒) と firefox (1 秒未満) で大きく異なる動作が見られます。

私がやろうとしていることに対するより良い解決策はありますか?

ここにコードがあります

<p>Log:
<div id="log">
</div>
</p>

Items:
<ul id="items">
</ul>


for (var i = 0; i < 10000; i++) {
    $("#items").append("<li id='item_" + i + "'>" + i + "</li>");
}

var top = new Date().getTime();

$("li[id^='item_']").each(function() {

  var start = new Date().getTime();
  var top = $(this).position().top;
  var end = new Date().getTime();

  var time = end - start;


  if (time > 1) {
     $("#log").append($(this).attr('id') + ": " + time + "<br/>");
  }

});

var bottom = new Date().getTime();

var overalltime = bottom - top;

$("#log").append("Overall Time: " + overalltime + "<br/>");
4

1 に答える 1