
किसी फ़ंक्शन को कॉल करने पर मैं अपने कर्सर को इस लोडिंग आइकन में कैसे बदल सकता हूं और मैं जावास्क्रिप्ट / jquery में इसे सामान्य कर्सर में कैसे बदलूंगा

किसी फ़ंक्शन को कॉल करने पर मैं अपने कर्सर को इस लोडिंग आइकन में कैसे बदल सकता हूं और मैं जावास्क्रिप्ट / jquery में इसे सामान्य कर्सर में कैसे बदलूंगा
जवाबों:
अपने jQuery के उपयोग में:
$("body").css("cursor", "progress");
और फिर वापस सामान्य करने के लिए
$("body").css("cursor", "default");
$("html,body")क्योंकि मेरे पृष्ठ का शरीर केवल खिड़की के आधे हिस्से में फिट होता है इसलिए नीचे के आधे भाग पर मंडराते समय कर्सर अभी भी डिफ़ॉल्ट था।
!importantनीचे दिए गए @ hrabinowitz के समाधान के साथ प्रयोग करना बेहतर समझा
एक सहकर्मी ने एक दृष्टिकोण का सुझाव दिया जो मुझे यहां चुने गए समाधान के लिए बेहतर लगता है। सबसे पहले, CSS में, इस नियम को जोड़ें:
body.waiting * {
cursor: progress;
}
फिर, प्रगति कर्सर चालू करने के लिए कहें:
$('body').addClass('waiting');
और प्रगति कर्सर को बंद करने के लिए कहें:
$('body').removeClass('waiting');
इस दृष्टिकोण का लाभ यह है कि जब आप प्रगति कर्सर को बंद कर देते हैं, तो आपके सीएसएस में जो भी अन्य कर्सर परिभाषित किए गए हैं उन्हें बहाल किया जाएगा। यदि सीएसएस नियम अन्य सीएसएस नियमों को खत्म करने की पूर्ववर्ती स्थिति में पर्याप्त शक्तिशाली नहीं है, तो आप शरीर और नियम के लिए एक आईडी जोड़ सकते हैं, या उपयोग कर सकते हैं !important।
कृपया 2018 में इसके लिए jQuery का उपयोग न करें! इस पूरी क्रिया को करने के लिए केवल एक बाहरी पुस्तकालय शामिल करने का कोई कारण नहीं है जिसे एक पंक्ति के साथ प्राप्त किया जा सकता है:
स्पिनर को कर्सर बदलें: document.body.style.cursor = 'wait';
कर्सर को सामान्य पर वापस लाएँ: document.body.style.cursor = 'default';
निम्नलिखित मेरा पसंदीदा तरीका है, और हर बार जब पृष्ठ बदलने वाला होता है, तो वह कर्सर को बदल देगा beforeunload
$(window).on('beforeunload', function(){
$('*').css("cursor", "progress");
});
Jquery और css का उपयोग करना:
$("#element").click(function(){
$(this).addClass("wait");
});
HTML: <div id="element">Click and wait</div>
सीएसएस: .wait {cursor:wait}
div। व्यवहार में, प्रतीक्षा कर्सर दिखाने के लिए चुनी गई वस्तु उस पर क्लिक की गई वस्तु से बड़ी होनी चाहिए। अक्सर, पूरे पृष्ठ पर दिखाने के लिए सबसे अच्छा है, जैसा कि स्वीकृत उत्तर में है।
सभी एकल तत्व को ओवरराइड करें
$("*").css("cursor", "progress");
$('#some_id').click(function() {
$("body").css("cursor", "progress");
$.ajax({
url: "test.html",
context: document.body,
success: function() {
$("body").css("cursor", "default");
}
});
});
यह तब तक एक लोडिंग कर्सर बनाएगा जब तक कि आपका ajax कॉल सफल नहीं हो जाता।
successऔरcomplete में हटा दिया गया है इसे jQ3 में हटा दिया गया है, इसलिए आपको समारोह $.ajax(...).always(...);में सेट किया जा सकता है beforeSend।
jQuery:
$("body").css("cursor", "progress");
फिर से वापस
$("body").css("cursor", "default");
शुद्ध:
document.body.style.cursor = 'progress';
फिर से वापस
document.body.style.cursor = 'default';
इसके लिए आपको जावास्क्रिप्ट की आवश्यकता नहीं है। आप सीएसएस का उपयोग करके अपने इच्छित कर्सर को बदल सकते हैं:
selector {
cursor: url(myimage.jpg), auto;
}
ब्राउज़र समर्थन के लिए यहां देखें क्योंकि ब्राउज़र के आधार पर कुछ सूक्ष्म अंतर हैं
यहां कुछ और दिलचस्प है जो आप कर सकते हैं। प्रत्येक अजाक्स कॉल से ठीक पहले कॉल करने के लिए एक फ़ंक्शन को परिभाषित करें। प्रत्येक अजाक्स कॉल पूरा होने के बाद कॉल करने के लिए एक फ़ंक्शन भी असाइन करें। पहला फ़ंक्शन प्रतीक्षा कर्सर सेट करेगा और दूसरा इसे साफ़ करेगा। वे निम्नलिखित की तरह दिखते हैं:
$(document).ajaxComplete(function(event, request, settings) {
$('*').css('cursor', 'default');
});
function waitCursor() {
$('*').css('cursor', 'progress');
}
यदि यह बहुत तेजी से बचाता है, तो यह प्रयास करें:
<style media="screen" type="text/css">
.autosave {display: inline; padding: 0 10px; color:green; font-weight: 400; font-style: italic;}
</style>
<input type="button" value="Save" onclick="save();" />
<span class="autosave" style="display: none;">Saved Successfully</span>
$('span.autosave').fadeIn("80");
$('span.autosave').delay("400");
$('span.autosave').fadeOut("80");
'बॉडी' के लिए कर्सर सेट करने से पेज की पृष्ठभूमि के लिए कर्सर बदल जाएगा, लेकिन उस पर नियंत्रण के लिए नहीं। उदाहरण के लिए, बटन अभी भी नियमित कर्सर होंगे जब उनके ऊपर मँडराया जाएगा। निम्नलिखित वह है जो मैं उपयोग कर रहा हूं:
'प्रतीक्षा' कर्सर सेट करने के लिए, एक शैली तत्व बनाएं और सिर में डालें:
var css = "* { cursor: wait; !important}";
var style = document.createElement("style");
style.type = "text/css";
style.id = "mywaitcursorstyle";
style.appendChild(document.createTextNode(css));
document.head.appendChild(style);
फिर कर्सर को पुनर्स्थापित करने के लिए, शैली तत्व को हटा दें:
var style = document.getElementById("mywaitcursorstyle");
if (style) {
style.parentNode.removeChild(style);
}
मैंने पाया कि कर्सर को प्रभावी ढंग से अपनी शैली को वापस लाने का एकमात्र तरीका यह है कि प्रतीक्षा शैली में परिवर्तित होने से पहले उसे शैली शीट में मूल शैली सेट करना या पृष्ठ के शुरू में शैली टैग में सेट करना था। शैली के नाम पर प्रश्न में वस्तु का वर्ग। फिर आपकी प्रतीक्षा अवधि के बाद, आप कर्सर शैली को एक खाली स्ट्रिंग पर वापस सेट करते हैं, "डिफ़ॉल्ट" नहीं और यह आपके मूल मानों पर वापस लौटता है जैसा कि आपके स्टाइल टैग या स्टाइल शीट में सेट है। प्रतीक्षा अवधि के बाद इसे "डिफ़ॉल्ट" पर सेट करना केवल "डिफ़ॉल्ट" नामक शैली के लिए हर तत्व के लिए कर्सर शैली को बदलता है जो एक सूचक है। यह इसे अपने पूर्व मूल्य में वापस नहीं बदलता है।
इस काम को करने के लिए दो शर्तें हैं। सबसे पहले आपको स्टाइल को स्टाइल शीट या पेज के हेडर में स्टाइल टैग्स के साथ सेट करना होगा, न कि इनलाइन स्टाइल के रूप में और दूसरा वेट स्टाइल को खाली स्ट्रिंग पर सेट करके अपनी स्टाइल को रीसेट करना है।