仅在使用jquery向下滑动时加载数据

时间:2011-02-20 06:06:46

标签: jquery load slidedown

我有一个链接,当用户点击它时,一些数据加载到div。我希望向用户显示等待消息,直到从服务器完全获取数据,然后将其显示给用户。

我还想调用数据url仅在结果框关闭(向下滑动)时发生,而不是在向下滑动和向上滑动事件中发生,以减少服务器上的负载。

我的代码在这里,但我不知道如何实现第二部分:

$(document).ready(function() {
        $("#prereq").hide();
        $("#prereqlink").click(function() {
             $("#prereq").html("please wait ...");
             $("#prereq").slideToggle("slow");

             $.ajax({ url:"referee.php",
                      success:function(data) {
                              $("#prereq").html(data);
                    }
             });

        });
 });
你帮我吗?

3 个答案:

答案 0 :(得分:2)

尝试这样的事情,但请注意我不太确定

var mode = 'down';

$(document).ready(function() {
    $("#prereq").hide();
    $("#prereqlink").click(function() {
         $("#prereq").html("please wait ...");
         $("#prereq").slideToggle("slow");
    if(mode == 'down'){
         $.ajax({ url:"referee.php",
                  success:function(data) {
                        mode = 'up';
                          $("#prereq").html(data);
                }
         });
    }
    else{
        mode = 'down';
    }

    });
});

答案 1 :(得分:2)

我找到了一个方法。使用$(“#prereq”)。是(“:visible”)我们可以检查它。

答案 2 :(得分:1)

    $(document).ready(function() {
    $("#prereq").hide();
    /* OR to add class to initialize as required 
     $("#prereq").addClass(("downMode").hide(); 
    */
    $("#prereqlink").click(function() {
         $("#prereq").slideToggle("slow", function(){
             $.ajax({ url:"referee.php",
                  beforeSend: function() {
                   if ($("#prereq").hasClass("downMode")){
                     $("#prereq").html("please wait ...").show();   
                     return true;
                   }
                   /* cancel ajax request */
                   return false ;   
                  },
                  success:function(data) {
                   $("#prereq").html(data);
                  }
             });
        }).toggleClass("downMode");
    });
 });

编辑:
我想我们可以删除beforeSend并在slideToggle回调中的$ .ajax(...)之前检查类  if ($(this).is('.downMode')){ $.ajax(....