作者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