2010-05-12 7 views
22

यह जांचने के लिए कि क्या दस्तावेज़ तैयार है (सभी जेएस फाइलें लोड की गई हैं, डीओएम तैयार है) jQuery के माध्यम से? क्या कोई झंडा है?दस्तावेज तैयार होने पर कैसे जांचें?

कुछ फ़ाइलों को पूरी तरह से डाउनलोड नहीं किया गया है, तो समस्या का सामना करना, और घटना उपयोगकर्ता द्वारा उठाई जाती है। मैं इवेंट हैंडलर के अंदर जांचना चाहता हूं।

मैं jQuery का उपयोग कर रहा हूं, asp.net

+3

औसत jQuery ट्यूटोरियल में यह पहला सबक है। क्या आपने उदाहरण के लिए एक पढ़ा? आप कुछ [यहां] (http://docs.jquery.com/Tutorials) पा सकते हैं। [मुख्य ट्यूटोरियल] (http://docs.jquery.com/Tutorials:How_jQuery_Works) इसे पहले से ही अध्याय 2 में संभालता है। – BalusC

+0

हां, मुझे तैयार फ़ंक्शन के बारे में पता है, लेकिन यह जांचने के लिए कि क्या डोम तैयार है? – Lalit

+1

@ ललित: डीओएम jQuery में '$ (दस्तावेज़)' है। – BalusC

उत्तर

26

यह दस्तावेज नहीं है, मुझे लगता है कि नहीं है, लेकिन अगर आप $(document).ready के लिए jQuery कोड को देखो:

// If the DOM is already ready 
if (jQuery.isReady) { 
    // Execute the function immediately 
    fn.call(document, jQuery); 
} // ... 

इस प्रकार, एक तरीका है कि बदल सकते हैं के लिए, आप $.isReady या jQuery.isReady उपयोग कर सकते हैं।

लाइन में $(document).ready का उपयोग करने का एक बेहतर तरीका होगा। जैसे:

function myClickHandler(event) { 
    // do stuff 

    $(document).ready(function() { 
    // Do this immediately if DOM is loaded, or once it's loaded otherwise. 
    } 
} 

अनिवार्य रूप से, यह एक गार्ड के रूप में तैयार कार्य का उपयोग करता है। यदि एक कथन के बजाय, आप तैयार फ़ंक्शन का उपयोग करते हैं। बेशक, तैयार फ़ंक्शन में व्यवहार होता है कि चलाएगा जब डोम लोड हो जाए। यदि आपका व्यवहार केवल लोड होने पर कुछ घटित करना चाहता है, लेकिन यदि कभी भी डोम लोड नहीं होता है, तो इसे कभी भी नहीं कर रहा है, फिर उपरोक्त ध्वज का उपयोग करके, या अपना स्वयं का सेट करना, बेहतर तरीका है। अपनी खुद की स्थापना:

$(document).ready(function() { 
    window.domIsReady = true; 
} 

if (window.domIsReady) { 
    // do stuff 
} 

अपनी खुद बनाना शायद बेहतर है, jQuery.isReady के बाद से प्रलेखित करने के लिए हो सकता है, और इसलिए शायद समर्थित नहीं है और किसी भी समय बदला जा सकता है नहीं लगता है।

+0

अपने आखिरी उदाहरण में, क्यों नहीं // // $ (दस्तावेज़) में पहले से ही सामग्री करें। पहले से ब्लॉक? – Mathew

+1

उन्होंने विशेष रूप से कहा कि वह एक झंडा चाहता था कि वह किसी अन्य ईवेंट हैंडलर में जांच करे। गलती अगर (window.domIsReady) स्टैंडअलोन डाल रही थी - प्रस्तुत किए गए केस केस में एक अलग फ़ंक्शन में होगा। अस्पष्ट होने के लिए खेद है। –

5

क्या यह एक चाल प्रश्न है? :)

क्या आप के लिए देख रहे हैं document.ready

उदाहरण:

$(document).ready(function() { 

    alert ("document is ready!"); 

    }); 
+0

मुझे वास्तव में ऐसा लगता है :) –

+1

दोस्तों, मुझे तैयार फ़ंक्शन के बारे में पता है। मेरे पास बटन का एक और क्लिक इवेंट हैंडलर है, मैं सिर्फ यह जांचना चाहता हूं कि अन्य सभी जेएस फाइलें लोड की गई हैं और डोम तैयार राज्य में है या नहीं। – Lalit

+1

@ ललित मैं देखता हूं। मुझे जांच करने के लिए 'तैयार' ध्वज के बारे में पता नहीं है, हालांकि अगर कोई था तो मुझे आश्चर्य नहीं होगा। यदि कुछ भी नहीं आता है, तो मैं '$ (दस्तावेज़) .ready() 'फ़ंक्शन का निर्माण करूंगा जो एक ध्वज को सत्य पर सेट करता है:' document_loaded' या कुछ। फिर आप उस झंडे की जांच कर सकते हैं। –

1

Jquery इस है:

$(document).ready(function(){ 
    alert('document ready here') 
}); 

यह किसी भी jQuery कि manipulates रैप करने के लिए काफी आम बात हो गई है डीओएम $ (दस्तावेज़) .ready() ब्लॉक में, यह सुनिश्चित करने के लिए कि डीओएम आगे बढ़ने से पहले वहां है।

+0

.ready() ओपी की तलाश नहीं है। –

+1

ठीक है, अपना ऊपर! इसने मेरा जवाब क्यों कम किया ?! शर्म की बात है! :) – Mathew

7
$(document).ready(function() { 
    // Handler for .ready() called. 
}); 
3

एक साधारण समारोह कॉल के निचले भाग में के रूप में उदाहरण देखने के लिए।

jQuery(document).ready(function(){ 
     alert("howdy"); 
    }); 

विकल्प, पता अगर यह भरी हुई है (बेहतर)

<script type="text/javascript"> 
if (typeof jQuery == 'undefined') 
{ 
    alert('not loaded'); 
} 
</script> 
लघु पागल बाहर वहां के लिए

: (कोई typeof जरूरत :)

<script type="text/javascript"> 
    if(!this.$) 
    { 
     alert('not loaded'); 
    } 
    </script> 
0

document.ready थॉट कोड केवल तभी ट्रिगर किया गया था जब दस्तावेज़ और सभी फाइलें लोड की गई थीं। खुद के साथ कभी समस्या नहीं थी।

यदि मुझे समस्या है, तो मैं या तो सभी फ़ाइलों में एक var रखता हूं और जांचता हूं कि वे क्या जोड़ते हैं, एक कोड में सभी कोड रखें।

एक निश्चित जवाब

+0

नहीं, HTML DOM लोड होने के तुरंत बाद document.ready को निकाल दिया गया है। जब भी बाकी सब कुछ (उदा। छवियां) समाप्त हो जाती है तो ऑनलोड निकाल दिया जाता है। –

0

आप किसी भी संयोग से देशी window.onload घटना के लिए देख रहे पोस्टिंग नहीं करने के लिए मुझे माफ कर दो? पृष्ठ पर सब कुछ (स्क्रिप्ट, छवियों, स्टाइलशीट सहित) लोड होने पर इसे निकाल दिया जाता है।

function doStuff() { 
    alert("The DOM and everything inside have loaded"); 
} 
window.onload = doStuff; 

यह भी देखें: addLoadEvent

+0

तैयार! = लोड किया गया, [यहां] देखें (http: // stackoverflow।कॉम/प्रश्न/8396407/jquery-what-are-भिन्न-दस्तावेज़-तैयार-और-विंडो-लोड के बीच) –

1

मुझे लगता है कि आपके बाद है:

$(window).load(function(){ 
    alert("All content has been downloaded to the web browser") 
    }); 

जो वहाँ मैं इतने लंबे समय पहले के बारे में नहीं एक blog किया: jquery 1.8.x .ready() api page से

0

, यह है कि एक ईवेंट हैंडलर समारोह बंधन का उपयोग कर रहा है

$(document).ready(handler); 

'हैंडल' फ़ंक्शन कॉल किया जाएगा: निम्न सिंटैक्स समस्या का समाधान , भले ही 'तैयार' घटना पहले ही निकाल दी गई हो।

संबंधित मुद्दे