jQuery खाली () बनाम निकालें ()


99

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

जवाबों:


160
  • empty() अपनी सामग्री के चयन को खाली करेगा, लेकिन चयन को स्वयं संरक्षित करेगा।
  • remove()अपनी सामग्री के चयन को खाली करेगा और चयन को स्वयं हटा देगा।

विचार करें:

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

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

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

दोनों ने डोम ऑब्जेक्ट्स को हटा दिया और जो मेमोरी उन्होंने ली, उसे जारी करना चाहिए, हां।


यहाँ प्रलेखन के लिंक दिए गए हैं, जिनमें उदाहरण भी हैं:


1
घटना संचालकों के बारे में क्या? मेरे पास एक अजीब मामला है जहां दो बार खाली + संलग्न होते हैं, अलग-अलग एपेंडेस के साथ पहले सेट के हैंडलर को निष्पादित करने के लिए दूसरे आइटम के दूसरे सेट का कारण बनता है।
किलरॉय

1
@ बहुत देर हो चुकी है, लेकिन वे हैंडलर को भी हटा देते हैं। एक मौका है कि आप उन हैंडलर जैसे liveया किसी फ़ंक्शन के साथ पंजीकृत थे delegate
पूर्ववत

55

प्रलेखन इसे बहुत अच्छी तरह से समझाता है। इसमें उदाहरण भी शामिल हैं:

इससे पहले:

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

।हटाना():

$('.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>

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


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

बिल्कुल सही सारांश, यह इसे अच्छी तरह से समझाता है! मेरे लिए स्वीकृत उत्तर से भी बेहतर है।
जॉनसन

2

$("body").empty() - यह निकाय टैग के अंदर HTML DOM तत्वों को हटाता है -

जब आप घोषणा करते हैं $("body").remove() - यह निकाय TAG के साथ पूरे HTML DOM को हटा देता है।


17
तीन वर्षों से यहां मौजूद मौजूदा उत्तरों में यह उत्तर क्या प्रदान करता है जो गायब है?
jcsanyi
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.