2011-01-14 15 views
5

के माध्यम से तत्व को हटा रहा है। मैं प्रोटोटाइप का उपयोग करके लिखी गई साइट पर काम कर रहा हूं लेकिन हम इसे jQuery पर फेज कर रहे हैं। प्रोटोटाइप के अजाक्स। अपडेटर के माध्यम से बहुत सारे पेज अपडेट किए जाते हैं। हालांकि, कभी-कभी तत्व जो प्रोटोटाइप हटाते हैं और प्रतिस्थापित करते हैं, उनके पास एक jQuery विजेट चलाया जाता है, इसलिए $ .cache में विजेट द्वारा बनाए गए अतिरिक्त तत्वों के संदर्भ हैं। चूंकि jQuery डोम हटाने को नहीं कर रहा है, इसलिए उन्हें हटाए जाने पर उन तत्वों के लिए $ .cache से डेटा को साफ़ करने का मौका नहीं है, और मैं मेमोरी रिसाव के साथ समाप्त होता हूं। क्या यह $ .cache की जांच करने के लिए jQuery को बताने का कोई तरीका है और उन तत्वों के लिए किसी भी डेटा को त्यागें जो अब डोम में नहीं हैं?किसी तत्व पर jQuery .data() का उपयोग करता है और फिर डायरेक्ट डोम मैनिपुलेशन रिसाव मेमोरी

उत्तर

3

एक छोटे से मुश्किल लगता है - विशेष रूप से के बाद से Ajax.Updater जो करता नहीं एक onSuccess/oncomplete कॉलबैक है, जिसका अर्थ है कि आप शायद, कैश की समय-समय पर जांच करना होगा दूसरे के बीच Ajax.Request की एक विशेषज्ञता है बातें। यह एक jQuery 'updater' बनाने से अधिक काम की तरह लगता है।

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

function update() { 
    $.ajax({ 
     type: 'get', 
     url: 'theContent.html', 
     success: function(text) { 
      // .html calls '.cleanData()' internally. No need to do anything else. 
      $('#updateMe').html(text); 
     } 
    }); 
} 

var i = setInterval(update, 5000); 
+0

हम पहले से ही के साथ शुरू प्रोटोटाइप का अनुकूलित संस्करण चला रहे हैं के बाद से, मैं सिर्फ प्रोटोटाइप Object.remove और Object.update कार्यों अगर jQuery मौजूद है अद्यतन jQuery का उपयोग करने के तत्वों को दूर करने, जिससे डेटा सफाई गारंटी देता है। मैं एक jQuery अद्यतनकर्ता नहीं लिखना चाहता था क्योंकि प्रोटोटाइप के अजाक्स। अपडेटर का उपयोग पूरे कोड में बहुत से स्थानों में किया जाता है ताकि उचित मात्रा में पूरी तरह से प्रतिस्थापित किया जा सके। –

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