在等待来自 .load() 的响应时,有没有办法将光标更改为忙/等待光标?
8 回答
尝试:
更新为与 jQuery 1.8 + 一起使用
$(document).ajaxStart(function() {
$(document.body).css({'cursor' : 'wait'});
}).ajaxStop(function() {
$(document.body).css({'cursor' : 'default'});
});
任何 ajax 开始和结束时的光标更改。这包括.load()
.
在此处尝试不同的光标样式:
我不得不调整上面雄辩的答案以使用 jQuery > 1.8。
$(document).ajaxStart(function () {
$(document.body).css({ 'cursor': 'wait' })
});
$(document).ajaxComplete(function () {
$(document.body).css({ 'cursor': 'default' })
});
我不喜欢简单地将 css 属性添加到 body 标记的解决方案:如果您已经为元素分配了光标,则它不会起作用。像我一样,我cursor: pointer;
在所有锚标签上都使用。所以,我想出了这个解决方案:
创建一个 CSS 类以避免覆盖当前光标(之后能够恢复正常)
.cursor-wait {
cursor: wait !important;
}
创建函数以添加和删除光标
cursor_wait = function()
{
// switch to cursor wait for the current element over
var elements = $(':hover');
if (elements.length)
{
// get the last element which is the one on top
elements.last().addClass('cursor-wait');
}
// use .off() and a unique event name to avoid duplicates
$('html').
off('mouseover.cursorwait').
on('mouseover.cursorwait', function(e)
{
// switch to cursor wait for all elements you'll be over
$(e.target).addClass('cursor-wait');
});
}
remove_cursor_wait = function()
{
$('html').off('mouseover.cursorwait'); // remove event handler
$('.cursor-wait').removeClass('cursor-wait'); // get back to default
}
然后创建您的 ajax 函数(我不使用 ajaxStart 或 ajaxStop 之类的事件,因为我不想在所有 ajax 调用中使用光标等待)
get_results = function(){
cursor_wait();
$.ajax({
type: "POST",
url: "myfile.php",
data: { var : something },
success: function(data)
{
remove_cursor_wait();
}
});
}
我对 jQuery load() 不是很熟悉,但我想它会是这样的:
$('button').click(function()
{
cursor_wait();
$('#div1').load('test.txt', function(responseTxt, statusTxt, xhr)
{
if (statusTxt == "success")
{ remove_cursor_wait(); }
});
});
希望能帮助到你!
你可以使用这个:
$('body').css('cursor', 'progress');
在开始加载之前,完成后将光标更改为自动
我希望这有帮助
$("body").css('cursor','wait');
//or
$("body").css('cursor','progress');
问候
我尝试了在这里和其他地方找到的各种方法,并确定在各种浏览器(甚至设置,如 RDP/VNC/终端用户)中存在太多错误,因为更改了鼠标光标。所以我最终得到了这个:
在文档准备好后触发的我的应用程序初始化代码中:
// Make working follow the mouse
var working = $('#Working');
$(document).mousemove(function(e) {
working.css({
left: e.pageX + 20,
top: e.pageY
});
});
// Show working while AJAX requests are in progress
$(document).ajaxStart(function() {
working.show();
}).ajaxStop(function() {
working.hide();
});
在我的 HTML 末尾,就在我的正文中:
<div id="Working" style="position: absolute; z-index: 5000;"><img src="Images/loading.gif" alt="Working..." /></div>
它的工作原理很像 Windows 中的“应用程序加载”鼠标光标,您仍然可以看到正常的光标,但您也可以看出正在发生一些事情。这对我来说是理想的,因为我希望用户觉得他们在等待时仍然可以做其他事情,因为到目前为止我的应用程序处理得很好(测试的早期阶段)。
我的 loading.gif 文件只是一个典型的旋转轮,大约 16x16 像素,所以不太烦人,但很明显。
尝试:
$(document).ajaxStart(function () {
$('body').css('cursor', 'wait');
}).ajaxStop(function () {
$('body').css('cursor', 'auto');
});
从 jQuery 1.8 开始,.ajaxStop() 和 .ajaxComplete() 方法只能附加到文档。
将 .ajaxStop() 与 .ajaxComplete() 互换都给了我令人满意的结果。
将正文的 CSS 更改为cursor: progress
.
为此,只需使用此 CSS 创建一个“等待”类,然后从正文中添加/删除该类。
CSS:
.waiting {
cursor: progress;
}
然后在你的 JS 中:
$('body').addClass('waiting');
您可以稍后使用 删除它.removeClass
。