6

मैंने कुछ ऐप के साथ खेलने के बाद, एक एप में कुछ मेमोरी लीक देखी हैं, एफएफ अधिक से अधिक मेमोरी (1 000 000 के ऊपर) का उपयोग करना शुरू कर देगा।एक jQuery संवाद को नष्ट कर देगा इसके अंदर तत्वों से जुड़े किसी भी हैंडलर को हटा दें?

मैंने कुछ शोध किया है और पाया है कि अगर मैं कुछ सामग्री की सामग्री को बदलने के लिए $(selector).html(some stuff) करता हूं तो पिछले सामग्री के तत्वों से jQuery हैंडलर को हटाया नहीं जाएगा और कुछ समस्याएं पैदा होंगी, मैंने उन सभी को ठीक कर दिया है।

मेरा प्रश्न यह है कि यदि मैं $(mydialog).dialog('destroy'); के साथ एक संवाद को नष्ट करता हूं तो क्या उस संवाद में मौजूद विभिन्न तत्वों से जुड़े हैंडलर हटा दिए जाएंगे?

धन्यवाद!

+0

क्या jQuery संस्करण? jQuery 'html() '(यही कारण है कि यह इतना धीमा है) का उपयोग कर दस्तावेज़ से हटाई गई सामग्री पर डेटा साफ़ करने का प्रयास करता है। जहां तक ​​मैं देख सकता हूं, इसे ईवेंट हैंडलर को सफलतापूर्वक हटा देना चाहिए; आईडी-> तत्व कैश बढ़ने के कारण अभी भी एक छोटी सी रिसाव होगी, लेकिन यह इतना नहीं है (यह वास्तव में मूर्खतापूर्ण व्यवहार के कारण jQuery 1.3 में वास्तव में खराब था क्योंकि सभी हटाए गए तत्व डेटा प्राप्त करने के कारण)। – bobince

+0

मैं jquery 1.4.1 और jquery ui 1.8.4 – Patricia

उत्तर

5

नहीं, उन्हें हटाया नहीं जाएगा, संवाद तत्व स्वयं को इसके पिछले राज्य में वापस कर दिया जाएगा, तत्व के अंदर स्पर्श नहीं किए गए हैं।

डायलॉग विजेट स्वयं, बटन, टाइटल बार, क्लोज़ बटन इत्यादि साफ़ हो जाते हैं, लेकिन जिस तत्व को आप एक संवाद में बदलते हैं वह प्रभावित नहीं होता है और साफ़ नहीं होता है। इसके लिए आपको .empty() या .remove() की संपूर्ण तत्व की आवश्यकता है।

+0

आह, रोचक का उपयोग कर रहा हूं। अगर मैंने $ (यह) किया है .remove(); निकट कॉलबैक में जो इसका ख्याल रखेगा हां? – Patricia

+0

@ पेट्रीसिया - हाँ, बिल्कुल –

+0

शानदार! धन्यवाद: डी – Patricia

1

मुझे यकीन है कि अगर प्रदान की विधि के साथ एक संवाद को नष्ट करने के लिए किसी भी निहित ईवेंट हैंडलर्स को हटा नहीं कर रहा हूँ, लेकिन आप हमेशा कर सकते हैं:

$(selector).empty(); 
बजाय

:

$(selector).html('blahblah'); // or .html(''); 

और उस होगा किसी भी इवेंट हैंडलर से किसी भी प्रतिस्थापित तत्वों से जुड़ा हुआ है, और इस प्रकार स्मृति रिसाव से बचें।

+0

हाँ, कहीं भी मेरे पास $ (चयनकर्ता) था। एचटीएमएल (सोम सामान) मैंने इसे $ (चयनकर्ता) .empty()। html (कुछ सामान) को उन समस्याओं को ठीक करने के लिए बदल दिया। मैं और सोच रहा था कि वास्तव में क्या नष्ट हुआ। – Patricia

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