我有以下代码......
$("#myID").click(function(){
//do some ajax requisition here
//make it appears in screen with a fadeIn(300)
});
#myID是一个标签的ID
但是我需要在实际执行结束之前不再调用此函数,我尝试在注释之后添加许多不同的代码,但没有成功,如果你可以帮我阻止第二次执行!
fadeIn()不执行执行,在执行效果时执行代码,有人可以帮助我吗?
由于
答案 0 :(得分:4)
您可以设置一个标志,用于存储AJAX功能是否正在运行的状态:
$(function () {
//set flag to allow AJAX calls
var AJAX_ok = true;
//bind click event handler
$("#myID").click(function(){
//check if it is ok to run an AJAX request right now
if (AJAX_ok === true) {
//if we can run an AJAX request then set the AJAX_ok flag to false so another one does not start
AJAX_ok = false;
//make the AJAX call
$.getJSON('<url>', function (data) {
//now that the callback function has been called, the AJAX call is done, so we re-enable the AJAX_ok flag
AJAX_ok = true;
//make it appears in screen with a fadeIn(300)
//if DATA is valid HTML then...
$(data).css('display', 'none').appendTo('#some-container').fadeIn(300);
});
}
});
});
这一次只能从#myID
元素的click
事件处理程序运行一个AJAX调用。
答案 1 :(得分:1)
它可以杀死以前的ajax,或者你可以创建一个运行的布尔值,当有人点击你将它设置为true并且你有一个if(!running){// do ajax},在ajax的回调你将运行设置为false
答案 2 :(得分:0)
使用同步AJAX调用(默认为异步)。有关如何执行此操作的详细信息,请参阅this question。
答案 3 :(得分:0)
可能有100种更好的方法,但是......
$("#myID").click(function() {
var is_running = $(this).data('running');
if (!is_running)
$(this).data('running', true);
else
return;
/* Do stuff */
$(this).data('running', false);
}
答案 4 :(得分:0)
使用回调来确保执行顺序。
$("#myID").click(function(){
$.ajax({
url: 'whatever url you are calling',
success: function(){
alert('ajax done');
$('whatever "it" is').fadeIn(300, function(){
//code place here will not execute until after fade in
alert('fadeIn done');
}
}
})
});