Je veux montrer à l'utilisateur un état que le résultat est en train de charger. Comment changer le curseur ou le gif pendant le chargement donne un résultat div avec $ MyDiv.load ("page.php")?
Exemple:
$("#loadImage").show();
$("#MyDiv").load("page.php", {limit: 25}, function(){
$("#loadImage").hide();
});
$("body").css("cursor", "progress");
Rappelez-vous juste de le retourner après:
$MyDiv.load("page.php", function () {
// this is the callback function, called after the load is finished.
$("body").css("cursor", "auto");
});
$("*").css("cursor", "progress")
fonctionnera peu importe où sur la page que vous pointez actuellement. De cette façon, vous ne devez pas déplacer le curseur pour le voir activé.
Je pense que le mieux est de mettre en place un fichier css
body.wait *, body.wait {
cursor:wait !important;
}
et ajouter/supprimer la classe d'attente dans le corps
cette méthode remplace tous les curseurs dans les entrées, les liens, etc.
Je pense vraiment que la meilleure solution consiste à utiliser simplement une classe dans l'élément body
$('body').addClass('cursorProgress');
Et quand vous voulez le garder comme avant, juste:
$('body').removeClass('cursorProgress');
et dans votre fichier css mettez quelque chose comme ça:
body.cursorProgress {
cursor: progress;
}
Ainsi, avec cette solution, vous ne modifiez pas les valeurs par défaut ou les modifications que vous apportez aux styles de curseur. Le deuxième avantage est que vous avez la possibilité d’ajouter l’important dans votre css.
body.cursorProgress {
cursor: progress !important;
}
Par exemple, si vous souhaitez afficher une image plus grande en survolant une vignette
//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");
});
}
Regardez ma solution, elle couvre tous les éléments, pas seulement la balise body: https://stackoverflow.com/a/26183551/1895428
Une approche JQuery plus propre, bien que pas nécessairement efficace, consiste à ajouter et supprimer une classe occupée à tous les objets.
Notez que tous les navigateurs (Firefox, par exemple) ne supposent pas une hauteur de 100% pour l'objet visible le plus à l'extérieur. Par conséquent, le curseur occupé ne s'affichera que sur la partie de l'écran.
<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>