यदि कोई उपयोगकर्ता पूरे पृष्ठ से पहले माउस ईवेंट या कीबोर्ड ईवेंट में इनपुट भेजता है तो संभावित समस्याएं नहीं हो सकतीं? [इस अनुच्छेद] एक स्क्रिप्ट के लिए बात कर रहा है .ready का उपयोग कर नहीं()
सामान्य में, अगर आप एक तत्व जावास्क्रिप्ट से प्रश्न में तत्व पहले से ही पार्स किया गया होगा, यानी का उल्लेख करना चाहते हैं, को जोड़ा गया डोम पेड़ यह लागू होता है कि आप एक ईवेंट हैंडलर (jQuery के साथ या उसके बिना) संलग्न करने की कोशिश कर रहे हैं, इसकी सीएसएस सेटिंग्स या जो कुछ भी बदलें।
.ready()
हैंडलर पूरे पृष्ठ गाया होने के लिए इंतजार नहीं है, यह इंतजार कर रहा है पृष्ठ "तैयार" इस अर्थ में कि यह किया गया है में जे एस हेरफेर के लिए होने के लिए के लिए पार्स और पूरे डोम पेड़ है बनाया गया है उस बिंदु पर प्रतिपादन अभी भी हो सकता है, उदाहरण के लिए, छवि तत्वों की वास्तविक सामग्री अभी भी आंशिक रूप से डाउनलोड की जा सकती है।
हालांकि, यह जब तक आप उस पृष्ठ में के बाद शामिल किया गया है प्रश्न में तत्व (रों) एक स्क्रिप्ट ब्लॉक में ऐसा रूप (बिना या) से पहले जावास्क्रिप्ट से तत्वों से छेड़छाड़ शुरू करने के लिए .ready()
संभव है स्रोत, क्योंकि ब्राउज़र आपके एचटीएमएल स्रोत से ऊपर से नीचे की पार्सिंग करता है। एक उदाहरण:
<input type="text" id="input1">
<script>
// following will work, because "input1" already exists
$("#input1").change(function() { /* do something */ });
// following will NOT work, because "input2" has not been parsed yet
$("#input2").change(function() { /* do something */ });
</script>
<input type="text" id="input2">
तो अगर किसी कारण से आप कार्यक्षमता के कुछ महत्वपूर्ण टुकड़ा है कि आप महसूस करते हैं बिल्कुल की स्थापना से पहले .ready()
आप ऊपर की तरह कुछ कर सकते हैं चाहिए।
भी ध्यान रखें कि आप .ready()
समारोह में सभी करता है, तो आप अपनी स्क्रिप्ट में शामिल हैं शरीर के निचले भाग में, क्योंकि (.ready()
साथ के रूप में) उस बिंदु पर सभी तत्वों को पार्स किया गया होगा की जरूरत नहीं है।
जहां आप की आवश्यकता है .ready()
बाहरी जेएस फ़ाइल में कोड के लिए है यदि आप सुनिश्चित नहीं कर सकते कि फ़ाइल में कहां रखा जाएगा पृष्ठ पर। यदि इसे <head>
अनुभाग में शामिल किया गया है, तो शेष दस्तावेज़ को पार्स किए जाने से पहले इसे निष्पादित किया जाएगा ताकि आपको .ready()
का उपयोग करने की आवश्यकता हो।
आपका दूसरा अनुच्छेद इसे पीछे की ओर ले जाता है। यह वही है जो दस्तावेज़ से पहले से ही रोकता है। – Sparky
मेरा दूसरा अनुच्छेद '.ready()' – user784637
का उपयोग कर एक स्क्रिप्ट ** नहीं ** का जिक्र कर रहा है, फिर आपको आगे बताने के लिए अपने प्रश्न के स्वरूपण को विस्तार और सुधारना चाहिए। एक उचित रूप से निर्मित पृष्ठ डोम पूरी तरह से लोड होने से पहले किसी भी माउस ईवेंट या इनपुट निष्पादित करने में सक्षम नहीं होगा। JQuery का उपयोग करते समय, document.ready इसे सुविधाजनक बनाने के लिए महत्वपूर्ण है। – Sparky