[問題] div高度判定

看板Ajax作者 (その唇にキスして欲しい)時間13年前 (2012/08/07 17:02), 編輯推噓0(0022)
留言22則, 2人參與, 最新討論串1/1
$(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

08/07 17:04, , 1F
loaded 放在最外面
08/07 17:04, 1F

08/07 17:04, , 2F
應該是全域變數的問題
08/07 17:04, 2F

08/07 17:13, , 3F
拉到$(document).ready(function(){ 上方,還是失敗?
08/07 17:13, 3F

08/07 17:23, , 4F
拉出去後把 loaded 跟 alert 交換位置?
08/07 17:23, 4F

08/07 17:26, , 5F
真的耶,but why?
08/07 17:26, 5F

08/07 17:26, , 6F
難道在這兩行之間就已經判定N個事件....
08/07 17:26, 6F

08/07 17:26, , 7F
換句話說一次alert產生的時間有這麼長嗎?
08/07 17:26, 7F

08/07 17:28, , 8F
另外補充一點,跟拉出去無關
08/07 17:28, 8F

08/07 17:28, , 9F
交換位置之後試著拉進來,還是成功
08/07 17:28, 9F

08/07 17:30, , 10F
拉進去成功應該是因為你判定裡面被你產生loaded了
08/07 17:30, 10F

08/07 17:31, , 11F
所以lazyload跑過一次後就有loaded變數,但是他跟ready的不
08/07 17:31, 11F

08/07 17:31, , 12F
同區塊,所以你拉進來後上面的loaded還是false
08/07 17:31, 12F

08/07 17:31, , 13F
至於alert的問題可能要請教其他大大,這是執行順序的問題
08/07 17:31, 13F

08/07 17:32, , 14F
就跟 for 迴圈跑 alert 的順序不一定正確類似吧(不確定)
08/07 17:32, 14F

08/07 17:34, , 15F
沒有耶,原本說要拉出去外面
08/07 17:34, 15F

08/07 17:34, , 16F
結果將loaded拉回來,交換true那行跟alert順序之後
08/07 17:34, 16F

08/07 17:35, , 17F
發現還是OK,然後交換又失敗了
08/07 17:35, 17F

08/07 17:35, , 18F
所以應該主要是交換解決的,還是感謝大大的回答
08/07 17:35, 18F

08/07 17:45, , 19F
問一下你是不是使用 firefox ?..
08/07 17:45, 19F

08/07 17:45, , 20F
以原本的程式碼我隨意測試,在chrome跟ie其實還是只執行一
08/07 17:45, 20F

08/07 17:46, , 21F
08/07 17:46, 21F

08/07 19:07, , 22F
的確是firefox.....
08/07 19:07, 22F
文章代碼(AID): #1G8DcNa2 (Ajax)
文章代碼(AID): #1G8DcNa2 (Ajax)