【发布时间】:2011-01-12 07:41:27
【问题描述】:
我正在使用 jQuery 来实现一些 ajax 功能。例如:当用户单击“获取数据”按钮时,jQuery 将调用一个 ajax 函数从服务器获取一些数据。这个过程可能需要一些时间,所以我添加了 .ajaxSend 和 .ajaxComplete 函数来显示等待过程的一些动画(实际上是在 z-index: 999 的 div 中的 'Loading Data' gif 是其他 div 的顶部在<body>) 内。
在等待过程中(“加载数据”),我想阻止用户点击其他按钮(例如:我有其他选项卡,小“加载数据”gif下方的按钮)。 我实现这一目标的方法是:
$("body").ajaxSend(function()
{
$(this).append('<div id="loading">Data Loading<\/div>');
$("div#error").remove();
$(this).children().not('#loading').css({'opacity':0.22});
});
$("body").ajaxComplete(function()
{
$("div#loading").remove();
$(this).children().not('#loading').css({'opacity':1});
});
但是,我不认为更改不透明度是最好的方法。除非您将不透明度设为 0,否则用户仍然可以单击其他按钮/选项卡。我不知道如何在此过程中完全避免任何用户交互?
【问题讨论】: