2011-10-23 74 views
1

我想实现一个jQuery滚动功能到我的页面上,当滚动到页面底部时,只在用户处于特定类别时在div上附加更多数据。jQuery滚动功能无法识别变量的变化

类别更改是在变量“katcheck”上进行的。追加应该只发生在katcheck ==“k”之后。但是滚动函数一旦被触发,将不会听取变量的变化。换句话说:当katcheck被更改为其他内容时,滚动功能仍将katcheck保存为“k”。

这里是代码片段:

var $start=8; 
var $length=2; 
$contentLoadTriggered = false; 

$(window).scroll(function() { 
    if($(window).scrollTop() >= ($("#full-page-container").height() - $(window).height()) && $contentLoadTriggered == false && katcheck == "k") 
    { 
    alert(katcheck); 
     $contentLoadTriggered = true; 

     $.get('getgallery_by_kat2.php', { k_id:1, st:$start, ln:$length }, function(data) { 

      $(data).hide().appendTo(".imgmain").fadeIn();   
      $contentLoadTriggered = false; 
      $start=$start+2; $("div#descri").hide();  
     }); 
    } 
}); 

我怎样才能使滚动功能识别变量的变化?我向函数中加入的警告证明,即使所有其他函数都能识别出该更改,滚动功能也不会。

谢谢

回答

1

ajax查询$ .get()以异步方式运行。

这意味着需要花时间完成它的职责。

您可以通过转动异步模式来确保它具有正确的数据。

像这样:

jQuery.ajaxSetup({async:false}); 

,然后进行使用jQuery.get(...)你的Ajax调用;

然后就再重新开启一次

jQuery.ajaxSetup({async:true}); 
+0

谢谢你,但,这如何解决这个问题,因为$获得()查询甚至不应该被解雇当变量“katcheck”不是“K” ? – Cletus

+0

我不确定您的评论是否解决了您的问题。但是经常发生的情况是异步模式会掩盖可变的变化。这是一个大问题“bug”,有时在间歇发生时会更糟糕。 (顺便说一下,我改变了变量名称并修正了一些拼写,我希望你不要介意。 – Sydwell

+0

你之前的代码并没有解决我的问题,行为没有什么不同。由于我在atm工作,我会尝试然后再回来,让你知道它是否有帮助,但是很好的了解这个bug,永远不会想到这个原因,以后会回来并回复,谢谢! – Cletus