যদি কোনও উপাদান অ্যানিমেটেড করা হচ্ছে তবে আমি 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');
    };

হ্যাঁ এটি ছিল, ধন্যবাদ। আমি কিভাবে এটি মিস করতে পারি? অভি, আমি বুড়ো হয়ে যাচ্ছি

এফওয়াইআই, আপনি যদি কলসব্যাকে "ওভারফ্লো: অটো" প্রোগ্রামিং করে নিজের সিএসএস শৈলীর ওভাররাইট করা ঝুঁকি না করতে চান, কেবল ব্যবহার করুন .css('overflow', '')। একটি খালি স্ট্রিং পাস করা সাধারণত উপাদানটির সামগ্রীর শৈলী থেকে পুরোপুরি সরিয়ে দেয়। এটি নথিভুক্ত আচরণ কিনা তা নিশ্চিত নয় তবে এটি একটি খুব দরকারী কৌশল।
ওয়ার্ড ডিএস

2
আমার মনে হয় না এটি সিএসএস অ্যানিমেশনগুলিকে সমর্থন করে।
Gqqnbig

5

বিকল্পভাবে, যদি কিছু অ্যানিমেটেড না হয় তা পরীক্ষা করতে, আপনি কেবল একটি "!" যুক্ত করতে পারেন:

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

এটি খুব সত্য নয় ... jquery এর বিপরীত '' নয় 'নয়'। 'না' jquery অবজেক্ট থেকে ফিল্টার করা উপাদানগুলি সরিয়ে দেয়। আপনি যদি অ্যানিমেটেড অবজেক্টের জন্য যাচাই করতে চান তবেif (!$(element).is(':animated')) {...}
amosmos

1
@amosmos উত্তরটি সম্পাদিত হয়েছিল এবং সম্প্রদায় অনুমোদিত হয়েছে .. আমি এটি যেখানে সঠিক ছিল সেখানে ঘুরিয়েছি।
বিল

2
দুর্দান্ত, কেবল এখন এটি গৃহীত উত্তরের সদৃশ। বিটিডব্লিউ এর অর্থ কি সম্প্রদায় অনুমোদিত?
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

আপনি যদি অ্যানিমেটেড উপাদানগুলিতে CSS প্রয়োগ করতে চান তবে আপনি :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);
});

যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কীভাবে এবং / বা কেন এটি সমস্যার সমাধান করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করলে উত্তরের দীর্ঘমেয়াদী মান উন্নত হবে। মানের উত্তর সরবরাহ করার জন্য দয়া করে এই কীভাবে উত্তরটি পড়ুন।
ওয়েওওয়েওয়ের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.