我有一個需要找出列表上的哪個元素是在頁面的頂部。我的解決方案是使用jQuery來遍歷元素並查看位置。JQuery position.top()慢很多元素
這個功能正常但性能在有很多元素時會降低。看到這個搗鼓一個簡單的例子
這裏是奇怪的事情,我注意到
- 它是position.top(第一次調用),需要時間
- 我看到在鉻(差不多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/>");
你能告訴我們一點關於這個問題?元素是否移動?他們如何移動? etc. –
在實際應用中 - 當用戶滾動頁面時,我希望在每個第10個元素到達頁面頂部之後發生一些事情。 正如我提到的代碼,我已經工作,它會檢測頁面頂部的項目。 但是,如果頁面有成千上萬的元素,檢測功能變得太慢,頁面無響應。 –
爲什麼不使用滾動功能?元素是否相同? – 2013-09-25 22:14:34