jquery এ অপেক্ষা () বা ঘুম () ফাংশন?


103

আমি একটি ক্লাস যুক্ত করতে চাই, 2 সেকেন্ড অপেক্ষা করুন এবং অন্য ক্লাস যুক্ত করুন।

.addClass("load").wait(2sec).addClass("done");

অন্য কোন উপায় আছে?

উত্তর:


189

সেটটাইমআউট কিছু সময় বিলম্বের পরে (মিলি সেকেন্ডে পরিমাপ করা) কিছু কোড চালায়। তবে, একটি গুরুত্বপূর্ণ দ্রষ্টব্য: জাভাস্ক্রিপ্টের প্রকৃতির কারণে, টাইমার সেটআপ হওয়ার পরে বাকী কোডটি চালিয়ে যেতে থাকে:

$('#someid').addClass("load");

setTimeout(function(){
  $('#someid').addClass("done");
}, 2000);

// Any code here will execute immediately after the 'load' class is added to the element.

4
এটি এই মুহুর্তে একটি দুর্বল সমাধান কারণ এটি অ্যানিমেশনটিতে jquery নিয়ন্ত্রণ পাওয়ার সুবিধা হারিয়ে ফেলেছে, .stop () এর মতো। আরও ভাল সমাধান হ'ল। (বিলম্ব) (
ব্যবহারকারী 151496

7
@ user123blahblah ... এই হল সঠিক প্রশ্ন (যা অ্যানিমেশনের সঙ্গে কিছুই করার আছে) জন্য সমাধান। .ডিলে অ্যানিমেশন সারিটির বাইরে জ্যাক মটরশুটি করে। যাকে আপনার ভ্রান্ত মন্তব্য মন্তব্য করা হয়েছে, তারা নিজেরাই বিভ্রান্ত করেছে।
অবিশ্বাস্যভাবে

34

হবে .delay()

http://api.jquery.com/delay/

আপনি যদি এজেএক্স স্টাফটি করে থাকেন তবে আপনার সত্যিকার অর্থে কেবল "স্বয়ংক্রিয়ভাবে" লেখা উচিত নয় আপনার প্রতিক্রিয়াটির জন্য অপেক্ষা করা উচিত এবং এটি আসলে হয়েছে কিনা তা দেখতে হবে।


4
এছাড়াও স্টিভন আপনি .removeClass('load')অন্যথায় আপনার উভয় ক্লাসে লোড এবং সম্পন্ন করতে চান যা সম্ভবত অনাকাঙ্ক্ষিত। আপনি যদি সত্যই অ্যাসিক্রোনাস অ্যাকশনটি সম্পন্ন করার অপেক্ষায় থাকেন তবে আপনার সেরা বাজিটি করা হয়। ADDClass যখন এটি সম্পূর্ণ হয় এবং সফল হয় তবে। ADDClass ('ত্রুটি') হতে পারে কোনও ধারণা
গ্যারি গ্রিন

52
জকিউয়ারি "বিলম্ব ()" ফাংশন কোনওভাবেই সাধারণ উদ্দেশ্যে "অপেক্ষা" সুবিধার মতো কিছু সরবরাহ করে না। এটি অ্যানিমেশন সিস্টেমের একটি অংশ এবং এটি কেবল অ্যানিমেশন কাতারে প্রয়োগ হয়। ফাংশনটি সর্বদা অবিলম্বে ফিরে আসে, এবং মৃত্যুদণ্ড বিরতি ছাড়াই চলতে থাকে।
পয়েন্টি

22

বিলম্ব () কাজটি করবে না। দেরি () সহ সমস্যাটি এটি অ্যানিমেশন সিস্টেমের অংশ এবং এটি কেবল অ্যানিমেশন কাতারে প্রয়োগ হয়।

আপনি যদি অ্যানিমেশনের বাইরে কিছু চালানোর আগে অপেক্ষা করতে চান তবে ??

এটা ব্যবহার কর:

window.setTimeout(function(){
                 // do whatever you want to do     
                  }, 600);

কি ঘটে ?: এই দৃশ্যে এটি কোঁকড়া ধনুর্বন্ধনী মধ্যে নির্দিষ্ট কোড সম্পাদন করার আগে 600 মিলিসেকেন্ড অপেক্ষা করে।

আমি এটি একবার বের করে এনে এটি আমাকে বেশ সাহায্য করেছে এবং আশা করি এটি আপনাকেও সহায়তা করবে!

গুরুত্বপূর্ণ নোটিশ: 'উইন্ডো.সেটটাইমআউট' সংশ্লেষজনকভাবে ঘটে। আপনার কোড লেখার সময় এটি মনে রাখবেন!


21

বুঝতে পারেন যে এটি একটি পুরানো প্রশ্ন, তবে আমি এই সমস্যাটি সমাধানের জন্য একটি প্লাগইন লিখেছি যাতে কেউ হয়তো দরকারী বলে মনে করতে পারেন।

https://github.com/madbook/jquery.wait

আপনাকে এটি করতে দেয়:

$('#myElement').addClass('load').wait(2000).addClass('done');

2

একটি ফাংশন রয়েছে, তবে এটি অতিরিক্ত: http://docs.jquery.com/Cookbook/wait

এই ছোট স্নিপেট আপনাকে অপেক্ষা করতে দেয়:

$.fn.wait = function(time, type) {
    time = time || 1000;
    type = type || "fx";
    return this.queue(type, function() {
        var self = this;
        setTimeout(function() {
            $(self).dequeue();
        }, time);
    });
};


0

xML4jQuery প্লাগইন ঘুম (এমএস, কলব্যাক) পদ্ধতি দেয়। বাকি চেইন ঘুমের সময় পরে কার্যকর করা হবে।

$(".toFill").html("Click here")
                .$on('click')
                .html('Loading...')
                .sleep(1000)
                .html( 'done')
                .toggleClass('clickable')
                .prepend('Still clickable <hr/>');
.toFill{border: dashed 2px palegreen; border-radius: 1em; display: inline-block;padding: 1em;}
        .clickable{ cursor: pointer; border-color: blue;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
   <script type="text/javascript" src="https://cdn.xml4jquery.com/ajax/libs/xml4jquery/1.1.2/xml4jquery.js"></script>
        <div class="toFill clickable"></div>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.