2011-11-02 16 views
6

में चलता है मेरे पास एक एमवीसी 2 वेब एप्लिकेशन है जो मास्टर पेज का उपयोग करता है। मास्टर पेजेस में, वहाँ सिर्फ एक नीचे फ़ाइलयह सुनिश्चित करने के लिए कि मेरा jQuery। पहले से ही

$(document).ready(function() { 
    ... 
}); 

इसी तरह फैले हुए जैसे कई तैयार ब्लॉक कर रहे हैं, मेरे विचार से बहुत से भी कई तैयार ब्लॉक में फैले हुए है।

मुझे मास्टर में एक और तैयार ब्लॉक पेश करने के लिए कहा गया है जो अंतिम बार चलाएगा।

मेरा सवाल है "क्या यह गारंटी देने का कोई तरीका है कि यह नया तैयार ब्लॉक आखिरी बार चलाएगा?"। मेरा विचार था कि अगर मैं इसे मास्टर पेज के बहुत नीचे रखता हूं जो ऐसा करेगा लेकिन मैं खुद को यह समझाने के लिए प्रतीत नहीं कर सकता कि यह निश्चित है।

+3

जहां तक ​​मैं समझता हूं कि यह कैसे काम करता है, सुनिश्चित करें कि यह पृष्ठ पर आखिरी है, पर्याप्त होना चाहिए। –

+0

चूंकि वेब पेज मास्टर और एमवीसी व्यू के आधार पर सर्वर पर "रचित" है, क्या मैं गारंटी दे सकता हूं कि मास्टर फ़ाइल के अंत में $ (दस्तावेज़) .ready() को रखने से यह चाल चल जाएगी? – wcm

उत्तर

5

यह jQuery के .add विधि है कि सभी कॉलबैक की सूची में अपना $(document).ready() के कॉलबैक पुश करने के लिए कहा जाता है:

add = function(args) { 
    var i, length, elem, type, actual; 
    for (i = 0, length = args.length; i < length; i++) { 
     elem = args[ i ]; 
     type = jQuery.type(elem); 
     if (type === "array") { 
      // Inspect recursively 
      add(elem); 
     } else if (type === "function") { 
      // Add if not in unique mode and callback is not in 
      if (!flags.unique || !self.has(elem)) { 
       list.push(elem); 
      } 
     } 
    } 
} 

स्रोत: jQuery's callback

तो: क्या यह मूल रूप से करता है जोर दे रहा है सब list सरणी के अंदर के फ़ंक्शन और ईवेंट ट्रिगर होने के बाद - उन्हें उसी क्रम में कॉल करें और यदि आपका फ़ंक्शन अंतिम बार धकेल दिया गया है - इसे अंतिम कहा जाएगा।

यह पिछले पुश करने के लिए अन्य सभी .js फ़ाइलों सहित के बाद आप भी सिर में यह घोषणा कर सकते हैं (सिर्फ यकीन है कि वहाँ किसी भी अन्य $(document).ready() नीचे नहीं कर रहे हैं कि कर)

+0

चूंकि वेब पेज मास्टर और एमवीसी व्यू के आधार पर सर्वर पर "रचित" है, तो क्या मैं गारंटी दे सकता हूं कि मास्टर फ़ाइल के अंत में $ (दस्तावेज़) .ready() को रखने से यह चाल चल जाएगी? – wcm

+0

बीटीडब्ल्यू, कोड को समझाने और दिखाने के लिए धन्यवाद। – wcm

+0

@wcm मुझे यकीन है कि आप कर सकते हैं :) – Teneff

0

मुझे लगता है कि आप यहां एक छोटी सी चाल कर सकते हैं। के रूप में मैं सटीक केस कि अपने समाधान के अनुरूप होनी चाहिए पता नहीं है, मेरा सुझाव है कि आप अपने cuntion यहाँ, मिलीसेकेंड में * देरी समय *) के माध्यम से

window.setTimeout(एक फोन एक देरी जोड़ने;

मुझे पता है कि यह सुरुचिपूर्ण नहीं है, लेकिन मैंने यही सोचा है, अगर यह आपकी मदद करता है तो मुझे बताएं, धन्यवाद।

1

यहाँ एक चाल मैं उपयोग करते हैं। मास्टर पृष्ठ में,

var postReadyEvents = []; 

तो घोषित, बच्चे पृष्ठों में, आप कोड पिछले चलाने के लिए की जरूरत है कि का एक सा है जब, मास्टर पृष्ठ $ में

postReadyEvents.push(function() { 
    ///your stuff - I usually use this to resize a grid or something. 
}); 

कर अब, (दस्तावेज़ तुम दोनों बच्चे पृष्ठों और मास्टर पेज पर $ (document) .ready() जब) .ready(),

for(var i = 0; i < postReadyEvents.length; i++) 
{ 
    postReadyEvents[i](); 
} 

करते हैं, बच्चे पेज पहले से चलाता है और मास्टर पृष्ठ पिछले चलाता है। यह दृष्टिकोण आपको नियंत्रित करने की क्षमता देता है जब कोड का एक निश्चित ब्लॉक चलता है।

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