我有一个链接,当用户点击它时,一些数据加载到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);
}
});
});
});
你帮我吗?
答案 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(....