Ich möchte dem Benutzer einen Status anzeigen, dass das Ergebnis geladen wird. Wie kann ich den Cursor oder das Gif während des Ladens des Ergebnisses in div mit $ MyDiv.load ("page.php") ändern?
Beispiel:
$("#loadImage").show();
$("#MyDiv").load("page.php", {limit: 25}, function(){
$("#loadImage").hide();
});
$("body").css("cursor", "progress");
Denken Sie daran, es nachher zurückzugeben:
$MyDiv.load("page.php", function () {
// this is the callback function, called after the load is finished.
$("body").css("cursor", "auto");
});
$("*").css("cursor", "progress")
funktioniert unabhängig davon, wo auf der Seite Sie gerade zeigen. Auf diese Weise müssen Sie den Cursor nicht bewegen, um ihn aktiviert zu sehen.
Ich denke, das Beste ist, es in CSS-Datei einzurichten
body.wait *, body.wait {
cursor:wait !important;
}
und füge Klasse Klassenwarte hinzu bzw. entferne sie
diese Methode überschreibt alle Cursor in Eingaben, Links usw.
Ich denke wirklich, dass es eine bessere Lösung ist, einfach eine Klasse im body-Element zu verwenden
$('body').addClass('cursorProgress');
Und wenn Sie es so behalten wollen, wie es vorher war, einfach:
$('body').removeClass('cursorProgress');
und in deine css-Datei steckte so etwas:
body.cursorProgress {
cursor: progress;
}
Mit dieser Lösung überschreiben Sie also nicht die Standardeinstellungen oder Änderungen, die Sie an Cursor-Stilen vornehmen, und der zweite Vorteil besteht darin, dass Sie die Möglichkeit haben, das Wichtige in Ihre CSS einzutragen.
body.cursorProgress {
cursor: progress !important;
}
Zum Beispiel, wenn Sie ein größeres Bild anzeigen möchten, wenn Sie sich in einer Miniaturansicht befinden
//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");
});
}
Schauen Sie sich meine Lösung an, sie deckt alle Elemente ab, nicht nur den Body-Tag: https://stackoverflow.com/a/26183551/1895428
Eine saubere JQuery-Methode, die jedoch nicht unbedingt effizient ist, besteht darin, allen Objekten eine aktive Klasse hinzuzufügen und zu entfernen.
Beachten Sie, dass nicht alle Browser (z. B. Firefox) für das äußerste sichtbare Objekt eine Höhe von 100% annehmen, so dass der besetzte Cursor nur auf dem Bildschirmbereich angezeigt wird
<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>