2010-06-22 14 views
91

empty() और remove()jQuery में विधियों के बीच क्या अंतर है, और जब हम इनमें से किसी भी विधि को कॉल करते हैं, तो बनाई जा रही वस्तुओं को नष्ट कर दिया जाएगा और स्मृति जारी की जाएगी?jQuery खाली() बनाम हटाएं()

उत्तर

145
  • empty() चयन की सभी सामग्री हटा देगा।
  • remove() चयन और इसकी सामग्री को हटा देगा।

पर विचार करें:

<div> 
    <p><strong>foo</strong></p> 
</div> 

$('p').empty(); // --> "<div><p></p></div>" 

// whereas, 
$('p').remove(); // --> "<div></div>" 

उन दोनों डोम वस्तुओं को हटाने और स्मृति वे तक का समय लग जारी करना चाहिए, हाँ।

+1

ईवेंट हैंडलर के बारे में क्या? मेरे पास एक अजीब मामला है जहां खाली + दो बार संलग्न होता है, अलग-अलग परिशिष्टों के साथ पहले सेट के हैंडलर निष्पादित करने के लिए संलग्न वस्तुओं के दूसरे सेट का कारण बनता है। – Killroy

+0

@ बहुत देर हो चुकी है, लेकिन वे हैंडलर को भी हटा देते हैं। एक मौका है कि आपके पास उन हैंडलर को 'लाइव' या 'प्रतिनिधि' जैसे फ़ंक्शन के साथ पंजीकृत किया गया था। – undone

48

प्रलेखन इसे बहुत अच्छी तरह से समझाता है।

से पहले:

<div class="container"> 
    <div class="hello">Hello</div> 
    <div class="goodbye">Goodbye</div> 
</div> 

.remove():

$('.hello').remove(); 

के बाद: यह भी उदाहरण दिए गए हैं

<div class="container"> 
    <div class="goodbye">Goodbye</div> 
</div> 

से पहले:

<div class="container"> 
    <div class="hello">Hello</div> 
    <div class="goodbye">Goodbye</div> 
</div> 

.empty():

$('.hello').empty(); 

के बाद:

<div class="container"> 
    <div class="hello"></div> 
    <div class="goodbye">Goodbye</div> 
</div> 
जहां तक ​​स्मृति का संबंध है

, एक बार एक हाथी मन को डीओएम से हटा दिया गया है और इसमें कोई और संदर्भ नहीं है कचरा कलेक्टर इसे चलाने पर स्मृति को पुनः प्राप्त करेगा।

+0

ग्रेट उत्तर ... thnx :) – Bhupi

+0

खाली चयनकर्ता के गुणों को स्पर्श नहीं करेगा। यदि आप चयनकर्ता तत्व के गुणों को हटाना चाहते हैं, तो मैंने देखा कि jQuery हटानेAttr और removeClass फ़ायरफ़ॉक्स में छोटी गाड़ी हैं। इसलिए मेरे पास विकल्प निकालने का तरीका उपयोग करना था और कंटेनर तत्व को फिर से जोड़ना था, फिर बच्चे नोड्स को उसी में जोड़ना था। – randominstanceOfLivingThing

+0

इसी तरह आप उपर्युक्त दो के संबंध में detach() को भी समझा सकते हैं .... – Krish

1

$("body").empty() -

जब आप यह घोषणा करते $("body").remove() - - यह शरीर टैग के साथ-साथ संपूर्ण HTML डोम को दूर यह शरीर टैग के अंदर एचटीएमएल डोम तत्वों को हटा।

+15

यह उत्तर क्या प्रदान करता है जो मौजूदा उत्तरों में अनुपलब्ध है जो तीन साल से यहां रहे हैं? – jcsanyi

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