2010-07-27 18 views
7

मैंने कुछ संबंधित प्रश्नों को देखा और मुझे यह बिल्कुल अलग पूछना चाहिए क्योंकि मैंने केवल कुछ ही देखा जो संबंधित लगते थे। मैं JQuery अजाक्स कॉल के माध्यम से एक संपूर्ण मध्य div लोड कर रहा हूं और मैं बस $ (दस्तावेज़) जैसे नए क्षेत्र पर कुछ स्वचालित JQuery करने में सक्षम होना चाहता हूं। डीओएम लोड होने पर पहले से ही अनुमति देता है। मैंने पढ़ा कि लाभार्थी ऐसा करेगा, लेकिन मुझे लगा कि इसमें एक रास्ता बनाया जाएगा। मैं एक शुरुआत क्षेत्र में एक इनपुट क्षेत्र में एक तारीख पिकर जोड़ने की कोशिश कर रहा हूँ।

यह वह सामग्री है जो बैकएंड में सामग्री के लिए कॉल करेगी जो तब कुछ विशिष्ट अनुभाग खींच जाएगी।

$.post("ReportingWizard",$("#wizard_form").serialize(), function (data) { setData(data); }); 

function setData(data) { 
divElement.innerHTML = data; 
$(activeTab).fadeIn(); //Fade in the active content 
$(".wizardBody").fadeIn(); 
} 
फ़ाइल है कि divElement में डाल दिया जा रहा है एक JQuery विधि इसके अंदर एचटीएमएल बदलने के लिए चलाने की जरूरत है होगा अंदर

+0

आप क्या करना चाहते हैं और कब? "मध्य div" लोड होने के बाद? –

+0

मैं इसे लोड करने के लिए मध्य div से पहले जोड़ा जाना चाहता हूं लेकिन प्राप्त की जा रही सामग्री के आधार पर। JQuery वास्तव में लोड होने वाली सामग्री में है और मूल रूप से divs को आईडी देता है और छवियों और तारीख-पिकिंग क्षमताओं को विशिष्ट क्षेत्रों में भी जोड़ता है। – Craig

उत्तर

8

AJAX फ़ंक्शन के कॉलबैक में ईवेंट पंजीकृत करें।

आप बीच div लोड करने के लिए .load() उपयोग कर रहे हैं, कॉलबैक में सीधे अपने jQuery कोड जगह:

$('#middleDiv').load('/fish.php', function() { 
    $('#someDiv').fadeIn(300); // ? whatever 
}); 

आप अन्य AJAX के कार्यों में से कुछ का उपयोग कर रहे हैं, तो आपके jQuery जगह कोड लाइन जहां कॉलबैक में डोम के लिए तत्वों को जोड़ने के बाद:

jQuery.get('/fish.php', function (response) { 
    $('#middleDiv').html(response); 

    $('#someDiv').fadeIn(300); // ? whatever 
}); 

यदि यह घटनाओं आप बाध्य करने के लिए चाहते हैं, तो आप का उपयोग करने में लग सकता है। on() (या delegate() या .live() यदि आप jQuery के पुराने संस्करणों का उपयोग कर रहे हैं, जो इस प्रश्न को मूल रूप से लिखा गया था)। आप इन विभिन्न विधियों की तुलना here की तुलना देख सकते हैं।

ये विधियां घटनाओं के बाध्यकारी को तत्वों तक बाध्य करने की अनुमति देती हैं, भले ही वे अभी भी डोम में मौजूद न हों; जिसका अर्थ है कि आप अपने $(document).ready() ब्लॉक में ईवेंट को बाध्य कर सकते हैं, भले ही तत्व अभी तक डोम में पंजीकृत नहीं हैं।

+0

मैं 3 या 4 अलग-अलग डेटा चयनों के लिए एक ही पोस्ट विधि का उपयोग कर रहा हूं ताकि दूसरी पंक्ति वास्तव में लोड होने वाली सामग्री के अंदर हो। कोड जोड़ा गया जो मैं वर्तमान में सामान्य क्षेत्र के अंदर उपयोग कर रहा हूं। – Craig

+0

यह मेरा अंतिम समाधान होगा, धन्यवाद। अंत में हालांकि मुझे बताया गया कि हमें वास्तव में अजाक्स की आवश्यकता नहीं है क्योंकि विशेषताओं में कटौती की जा रही सुविधाओं को वास्तव में इस्तेमाल किया जाता है। – Craig

+0

मुझे कक्षाबद्ध तत्व पर चलाने के लिए एक फ़ंक्शन की आवश्यकता है जब यह 1 है) यह लोड हो गया है या 2) यह पेज में अजाक्स के माध्यम से चलाया गया है, मैंने 'ऑन' ('तैयार', '.my-class', हैंडलर) ' लेकिन यह काम नहीं किया। – Shimmy

4

क्रेग,

मुझे लगता है कि आप इस मुश्किल तरीके के बारे में जाने के लिए कोशिश कर रहे हैं।

सबसे पहले: हालांकि आप पृष्ठ में इंजेक्ट करने से पहले तकनीकी रूप से जावास्क्रिप्ट/jquery के साथ प्रतिक्रिया में हेरफेर कर सकते हैं, लेकिन इसे जोड़ने के तुरंत बाद ऐसा करने के लिए यह बहुत आसान हो जाएगा (एक दस्तावेज़ तैयार के अनुसार)।

दूसरा: मुझे यकीन नहीं है कि यदि आप डेटपिकर की तरह कुछ जोड़ रहे थे तो यह तरीका कितना प्रभावी होगा। मुझे लगता है कि आप पूरी चीज पृष्ठ में हैं (बस एक अनुमान) से पहले आप एक तत्व में डेटपिकर नहीं जोड़ सकते हैं। उन jQuery UI विजेट्स पृष्ठभूमि में बहुत कुछ चल रहा है।

मेरा सुझाव है कि आप मैट की सलाह का पालन करें।

आप $ .post कॉल करते हैं, कॉलबैक फ़ंक्शन आपके $ (document) .ready समारोह के रूप में एक ही है, यह जैसे ही प्रतिक्रिया उपलब्ध है जिससे आप कुछ इस तरह कर सकता है बुलाया जाएगा:

$.post(url, data, function(response) { 
    $("#some_element").append(response); 
    // Now your element has been injected you can do whatever u like here 
    // call some function etc. 
}); 

यह इसके बारे में जाने का सबसे अच्छा तरीका है। जैसे ही डेटा आपके पृष्ठ में $ (दस्तावेज़) के समान ही इंजेक्शन दिया गया है, मैनिपुलेशन किया जाएगा।

यदि आपको लगता है कि आप क्या कर रहे हैं उसके साथ कुछ अंतराल है और आप अपने उपयोगकर्ताओं को देखना नहीं चाहते हैं, तो छिपाने के लिए डिस्प्ले सेट करें और फिर मैनिपुलेशन किए जाने के बाद फीका या दिखाएं।

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