Я хочу показать пользователю состояние, в результате которого загружается результат. Как изменить курсор или gif при загрузке результата в div с помощью $MyDiv.load( "page.php" )?
Jquery wait cursor при загрузке html в div
Ответ 1
- Первоначально стиль загружаемого изображения не отображается.
- Измените стиль на видимый, когда начнете загрузку.
- Измените стиль на невидимый при завершении загрузки с использованием аргумента обратного вызова для загрузки().
Пример:
$("#loadImage").show();
$("#MyDiv").load("page.php", {limit: 25}, function(){
$("#loadImage").hide();
});
Ответ 2
$("body").css("cursor", "progress");
Не забудьте вернуть его потом:
$MyDiv.load("page.php", function () {
// this is the callback function, called after the load is finished.
$("body").css("cursor", "auto");
});
Ответ 3
$("*").css("cursor", "progress")
будет работать независимо от того, где на странице, которую вы сейчас указываете. Таким образом, вам не нужно перемещать курсор, чтобы увидеть, как он активирован.
Ответ 4
Я думаю, что лучше всего настроить в файле css
body.wait *, body.wait {
cursor:wait !important;
}
и добавить/удалить класс wait в теле
этот метод переопределяет все курсоры на входах, ссылках и т.д.
Ответ 5
Я действительно считаю, что это лучшее решение просто использовать класс в элементе body
$('body').addClass('cursorProgress');
И когда вы хотите сохранить его так, как было раньше:
$('body').removeClass('cursorProgress');
и в вашем файле css добавьте что-то вроде этого:
body.cursorProgress {
cursor: progress;
}
Итак, с помощью этого решения вы не переопределяете значения по умолчанию или изменения, которые вы делаете в стилях курсора, а второе преимущество заключается в том, что у вас есть возможность добавления важного значения в ваш css.
body.cursorProgress {
cursor: progress !important;
}
Ответ 6
Например, если вы хотите показать увеличенное изображение при наведении указателя на миниатюру
//Hovered image
$("a.preview").hover(function(e) {
var aprev = this;
//Show progress cursor while loading image
$(aprev).css("cursor", "progress");
//#imgpreview is the <div> to be loaded on hover
$("#imgpreview").load(function() {
$(aprev).css("cursor", "default");
});
}
Ответ 7
Более чистый подход JQuery, хотя и не обязательно эффективный, заключается в добавлении и удалении класса занятых ко всем объектам.
Обратите внимание, что не все браузеры (например, Firefox) принимают высоту 100% для внешнего видимого объекта, поэтому курсор занят только отображается на части экрана
<head runat="server">
<title></title>
<style type="text/css">
.busy
{
cursor: wait !important;
}
</style>
<script type="text/javascript" src="scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
//<![CDATA[
$(function () {
$("#btnToggleWait").click(function (e) {
if ($(e.target).hasClass("busy")) {
$("*").removeClass("busy");
}
else {
$("*").addClass("busy");
}
e.preventDefault();
e.stopPropagation();
return false;
});
});
//]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<button id="btnToggleWait">
Toggle Wait</button>
</div>
</form>
</body>
Ответ 8
Посмотрите на мое решение, оно охватывает все элементы, а не только тег тела: fooobar.com/info/90853/...