मैं यहाँ सभी उत्तरों पर आश्चर्यचकित हूँ ...
इसे इस्तेमाल करे:
window.setTimeout(function() { /* your stuff */ }, 0);
नोट 0 टाइमआउट। यह एक मनमाना संख्या नहीं है ... जैसा कि मैं समझता हूं (हालांकि मेरी समझ थोड़ी अस्थिर हो सकती है), दो जावास्क्रिप्ट ईवेंट कतारें हैं - एक मैक्रो इवेंट के लिए और एक माइक्रो ईवेंट के लिए। "बड़ी" स्कोप्ड कतार यूआई (और डीओएम) को अपडेट करने वाले कार्यों को रखती है, जबकि माइक्रो कतार त्वरित-कार्य प्रकार के संचालन करती है।
यह भी महसूस करें कि टाइमआउट सेट करना इस बात की गारंटी नहीं देता है कि कोड उस निर्दिष्ट मान पर सटीक रूप से कार्य करता है। यह क्या करता है अनिवार्य रूप से फ़ंक्शन को उच्च कतार (यूआई / डोम को संभालने वाले) में डालता है, और निर्दिष्ट समय से पहले इसे नहीं चलाता है।
इसका मतलब यह है कि 0 का टाइमआउट सेट करना, इसे जावास्क्रिप्ट / ईवेंट के हिस्से में जावास्क्रिप्ट की ईवेंट कतार में डालता है, जिसे अगले संभावित मौके पर चलाया जा सकता है।
इसका मतलब यह है कि DOM सभी पिछली कतार की वस्तुओं (जैसे कि द्वारा डाला गया) के साथ अपडेट हो जाता है $.append(...);, और जब आपका कोड चलता है, तो DOM पूरी तरह से उपलब्ध हो जाता है।
(ps - मैंने इसे जावास्क्रिप्ट निनजा के जावास्क्रिप्ट से सीखा - एक उत्कृष्ट पुस्तक: https://www.manning.com/books/secrets-of-the-javascript-ninja )
append()बहुत कम समय लगता है।