जवाबों:
आप अपने वर्ग को हटाने के लिए एक नया कतार आइटम बना सकते हैं:
$("#div").addClass("error").delay(1000).queue(function(next){
$(this).removeClass("error");
next();
});
या dequeue विधि का उपयोग कर :
$("#div").addClass("error").delay(1000).queue(function(){
$(this).removeClass("error").dequeue();
});
कारण कि आपको कॉल करने की आवश्यकता है next
या dequeue
jQuery को बताएं कि आप इस पंक्तिबद्ध आइटम के साथ कर रहे हैं और इसे अगले एक पर जाना चाहिए।
AFAIK देरी विधि केवल संख्यात्मक सीएसएस संशोधनों के लिए काम करती है।
अन्य उद्देश्यों के लिए जावास्क्रिप्ट एक setTimeout विधि के साथ आता है:
window.setTimeout(function(){$("#div").removeClass("error");}, 1000);
मुझे पता है कि यह एक बहुत पुरानी पोस्ट है, लेकिन मैंने कुछ जवाबों को एक jQuery आवरण फ़ंक्शन में जोड़ दिया है जो कि चेनिंग का समर्थन करता है। आशा है कि इससे किसी को लाभ होगा:
$.fn.queueAddClass = function(className) {
this.queue('fx', function(next) {
$(this).addClass(className);
next();
});
return this;
};
और यहाँ एक removeClass आवरण है:
$.fn.queueRemoveClass = function(className) {
this.queue('fx', function(next) {
$(this).removeClass(className);
next();
});
return this;
};
अब आप इस तरह से सामान कर सकते हैं - 1sec प्रतीक्षा करें, जोड़ें .error
, 3secs प्रतीक्षा करें, निकालें .error
:
$('#div').delay(1000).queueAddClass('error').delay(2000).queueRemoveClass('error');
jQuery का CSS हेरफेर कतारबद्ध नहीं है, लेकिन आप इसे 'fx' कतार के अंदर निष्पादित कर सकते हैं:
$('#div').delay(1000).queue('fx', function() { $(this).removeClass('error'); });
कॉलिंगटाइम के रूप में काफी समान है लेकिन इसके बजाय jQuery के कतार mecanism का उपयोग करता है।
निश्चित रूप से यह अधिक सरल होगा यदि आप इस तरह jQuery का विस्तार करते हैं:
$.fn.addClassDelay = function(className,delay) {
var $addClassDelayElement = $(this), $addClassName = className;
$addClassDelayElement.addClass($addClassName);
setTimeout(function(){
$addClassDelayElement.removeClass($addClassName);
},delay);
};
उसके बाद आप इस फ़ंक्शन का उपयोग कर सकते हैं जैसे addClass:
$('div').addClassDelay('clicked',1000);
return this
देरी एक कतार पर चल रही है। और जहाँ तक मुझे पता है कि सीएसएस हेरफेर (चेतन के माध्यम से अन्य) पंक्तिबद्ध नहीं है।
delay
कोई भी कतार कार्यों पर काम नहीं करता है, इसलिए हमें उपयोग करना चाहिए setTimeout()
।
और आपको चीजों को अलग करने की आवश्यकता नहीं है। आपको बस एक setTimeOut
विधि में सब कुछ शामिल करना होगा :
setTimeout(function () {
$("#div").addClass("error").delay(1000).removeClass("error");
}, 1000);
इसे इस्तेमाल करे:
function removeClassDelayed(jqObj, c, to) {
setTimeout(function() { jqObj.removeClass(c); }, to);
}
removeClassDelayed($("#div"), "error", 1000);
इस सरल तीर funtion का प्रयास करें:
setTimeout( () => { $("#div").addClass("error") }, 900 );
$("#div").addClassTemporarily("error",1000)