1

我有一个链接,当用户单击它时,一些数据会加载到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);
                    }
             });

        });
 });

你能帮我吗??

4

3 回答 3

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';
    }

    });
});
于 2011-02-20T06:13:22.940 回答
2

我找到了一种方法。通过使用 $("#prereq").is(":visible") 我们可以检查它。

于 2011-02-20T07:04:41.430 回答
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");
    });
 });

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

于 2011-02-20T06:55:09.627 回答