अगर एक तत्व एनिमेटेड किया जा रहा है तो मुझे jQuery के साथ कैसे पता चलेगा?


101

मैं पृष्ठ पर कुछ तत्वों को स्थानांतरित करने की कोशिश कर रहा हूं, और जब एनीमेशन होता है, उस दौरान मैं एक एनीमेशन पर "ओवरफ्लो: हिडन" लागू करना चाहता हूं, और एनीमेशन पूरा होने के बाद "ऑटो" पर "ओवरफ्लो" कर दूंगा।

मुझे पता है कि jQuery का एक उपयोगिता फ़ंक्शन है जो यह निर्धारित करता है कि कुछ तत्व एनिमेटेड हो रहा है लेकिन मैं इसे डॉक्स में कहीं भी नहीं ढूँढ सकता

जवाबों:


199
if( $(elem).is(':animated') ) {...}

अधिक जानकारी : https://api.jquery.com/animated-selector/


या:

$(elem)
    .css('overflow' ,'hidden')
    .animate({/*options*/}, function(){
        // Callback function
        $(this).css('overflow', 'auto');
    };

हाँ, यह धन्यवाद था। मैं इसे कैसे याद कर सकता हूं? अरे, मैं बूढ़ा हो रहा हूँ

FYI करें, यदि आप कॉलबैक में "ओवरफ्लो: ऑटो" प्रोग्रामिंग करके अपनी CSS शैलियों को अधिलेखित करने का जोखिम नहीं उठाना चाहते हैं, तो बस उपयोग करें .css('overflow', '')। खाली स्ट्रिंग पास करना आम तौर पर तत्व की शैली से उस संपत्ति को पूरी तरह से हटा देता है। यकीन नहीं हो रहा है कि क्या यह प्रलेखित व्यवहार है, लेकिन यह एक बहुत उपयोगी चाल है।
वार्ड डीएस

2
मुझे नहीं लगता कि यह सीएसएस एनिमेशन का समर्थन करता है।
गक्क्निबग

5

वैकल्पिक रूप से, यह जांचने के लिए कि क्या कुछ एनिमेटेड नहीं है, आप बस "जोड़ सकते हैं!":

if (!$(element).is(':animated')) {...}

यह बहुत सच नहीं है ... jquery का विपरीत 'है' 'नहीं' है। 'नहीं' jquery वस्तु से फ़िल्टर किए गए तत्वों को निकालता है। यदि आप नहीं एनिमेटेड वस्तु के लिए जाँच करना चाहते हैंif (!$(element).is(':animated')) {...}
amosmos

1
@amosmos उत्तर को संपादित किया गया था और समुदाय को मंजूरी दी गई थी। मैंने इसे वापस वहीं ले लिया है जहां यह सही था।
बिल

2
महान, केवल अब यह स्वीकृत उत्तर की नकल है। BTW इसका क्या मतलब है कि समुदाय को मंजूरी दी गई है
amosmos

@amosmos ने ट्रोल करना बंद कर दिया
एरिक सिसेरो

1

यदि आप cssएनीमेशन का उपयोग कर रहे हैं और विशिष्ट का उपयोग करके एनीमेशन असाइन करते हैं class name, तो आप इसे इस तरह से देख सकते हैं:

if($("#elem").hasClass("your_animation_class_name")) {}

लेकिन सुनिश्चित करें कि आप कक्षा को हटा रहे हैं नामीविच एनीमेशन को संभाल रहा है, एनीमेशन समाप्त होने के बाद!

class nameएनीमेशन समाप्त होने के बाद इस कोड को हटाने के लिए इस्तेमाल किया जा सकता है:

$("#elem").on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',
function(){ 
        $(this).removeClass("your_animation_class_name");
});

ओपी jQuery के एनिमेटोन का उपयोग कर रहा है।
मिचेल पेरोलाकोव्स्की

बस एक विकल्प सुझा रहे हैं। और क्या आपका मतलब एनीमेशन था?
अरी

हां, मेरा मतलब था एनीमेशन। IMO आपका उत्तर पूरी तरह से टॉपिक है।
माइकल पेरोलकोव्स्की

0

यदि आप एनिमेटेड तत्वों के लिए सीएसएस लागू करना चाहते हैं, तो आप :animatedछद्म चयनकर्ता का उपयोग कर सकते हैं और इसे इस तरह कर सकते हैं ,

$("selector").css('overflow','hidden');
$("selector:animated").css('overflow','auto');

स्रोत: https://learn.jquery.com/using-jquery-core/selecting-elements/


0
$('selector').click(function() {
  if ($(':animated').length) {
    return false;
  }

  $("html, body").scrollTop(0);
});

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन समस्या को हल करने के तरीके के बारे में अतिरिक्त संदर्भ प्रदान करता है और यह समस्या को हल करता है ताकि उत्तर के दीर्घकालिक मूल्य में सुधार हो सके। गुणवत्ता उत्तर प्रदान करने के लिए कृपया यह कैसे पढ़ें - उत्तर दें।
द वेवेयरे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.