作者KawasumiMai (その唇にキスして欲しい)
看板Ajax
標題[問題] div高度判定
時間Tue Aug 7 17:02:11 2012
$(document).ready(function(){
$(window).scroll(lazyload);
loaded=false;
});
function lazyload(){
if ($(window).scrollTop() + $(window).height() >=
$('div#loading').offset().top) {
if(!loaded){
alert("1");
loaded=true;
}
}
}
想問的是
因為一次滾動會滾好幾格
然後會產生好幾次判定
雖然加上了loaded布林
但是不知道為什麼可能是事件幾乎是同時發生的
還是會產生好幾次的alert
照理說應該是指會產生一次,也就是第一個滿足條件的情況而已
不然可能會造成多載的情況
這部分是哪裡出了問題呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.93.204
1F:→ kerash:loaded 放在最外面 08/07 17:04
2F:→ kerash:應該是全域變數的問題 08/07 17:04
3F:→ KawasumiMai:拉到$(document).ready(function(){ 上方,還是失敗? 08/07 17:13
4F:→ kerash:拉出去後把 loaded 跟 alert 交換位置? 08/07 17:23
5F:→ KawasumiMai:真的耶,but why? 08/07 17:26
6F:→ KawasumiMai:難道在這兩行之間就已經判定N個事件.... 08/07 17:26
7F:→ KawasumiMai:換句話說一次alert產生的時間有這麼長嗎? 08/07 17:26
8F:→ KawasumiMai:另外補充一點,跟拉出去無關 08/07 17:28
9F:→ KawasumiMai:交換位置之後試著拉進來,還是成功 08/07 17:28
10F:→ kerash:拉進去成功應該是因為你判定裡面被你產生loaded了 08/07 17:30
11F:→ kerash:所以lazyload跑過一次後就有loaded變數,但是他跟ready的不 08/07 17:31
12F:→ kerash:同區塊,所以你拉進來後上面的loaded還是false 08/07 17:31
13F:→ kerash:至於alert的問題可能要請教其他大大,這是執行順序的問題 08/07 17:31
14F:→ kerash:就跟 for 迴圈跑 alert 的順序不一定正確類似吧(不確定) 08/07 17:32
15F:→ KawasumiMai:沒有耶,原本說要拉出去外面 08/07 17:34
16F:→ KawasumiMai:結果將loaded拉回來,交換true那行跟alert順序之後 08/07 17:34
17F:→ KawasumiMai:發現還是OK,然後交換又失敗了 08/07 17:35
18F:→ KawasumiMai:所以應該主要是交換解決的,還是感謝大大的回答 08/07 17:35
19F:→ kerash:問一下你是不是使用 firefox ?.. 08/07 17:45
20F:→ kerash:以原本的程式碼我隨意測試,在chrome跟ie其實還是只執行一 08/07 17:45
21F:→ kerash:次 08/07 17:46
22F:→ KawasumiMai:的確是firefox..... 08/07 19:07