假设您在一个函数中有一个脚本,并将其连接到按钮onclick事件。
我想知道你如何告诉某个功能正忙/正在运行以及如何告诉它已完成/完成?
JQuery中有标志吗?
...谢谢
答案 0 :(得分:0)
如果您正在讨论AJAX jQuery函数,例如$ .post,那么您可以分配一个成功函数...
$('#loading').fadeIn(200);
$.post('link.php', $('#form').serialize(), function(data) {
// this will trigger when data is done retrieving
$('#newcontent').html(data);
$('#loading').fadeOut(200);
});
答案 1 :(得分:0)
只需使用函数的状态保存变量:
var myFunctionRunning;
$('#myElem').click(function () {
myFunctionRunning = true;
// long running stuff goes here
myFunctionRunning = false;
});
答案 2 :(得分:0)
我喜欢@David Jashi和@rusln在我原来的问题下的后续评论。
不幸的是,他们并没有创造出一个"答案"部分,所以我无法点击它们上的绿色复选标记(在评论中),我只能回答我的问题而不是在这里关闭StackOverflow问题。 : - (
答案 3 :(得分:0)
如果要执行某项功能并检查其是否正在运行,则可以检查与该元素关联的 .data() 存储。
$(document).on("click.demo", "#btnRun", function (e) {
e.preventDefault();
var self = $(this),
status = self.data("_status");
if (status == "Running") return false;
// Define the status of execution
if(!status) self.data("_status", "Running");
// TODO: add your code here
// When finish, delete the flag
self.removeData("_status");
});
您也可以创建 closure (请参阅JavaScript: Closures)
请考虑以下示例:http://jsfiddle.net/qundC
// Creates a closure with status and the callback
var fnExecute = (function () {
var _running = false;
// Function returned by the closure
return function (e) {
e.preventDefault();
if(_running) {
$('#status').text("Running...");
return false;
}
_running = true;
$('#status').text("Starts...");
// TODO: add your code here
// Emulates an expensive processing
setTimeout(function () {
_running = false;
$('#status').text("Done!!");
}, 5000);
};
}());
// Assigns the function returned by the closure
$(document).on("click.demo", "#btnRun", fnExecute);