JQuery के साथ एक DOM एलिमेंट को कैसे नष्ट करें?


जवाबों:


194

है $target.remove();कि आप क्या ढूंढ रहे हैं?

https://api.jquery.com/remove/


75
बेशक यह केवल इसे दृश्यमान दस्तावेज़ से निकाल देता है। यदि जावास्क्रिप्ट से नोड के अन्य संदर्भ हैं, जैसे कि $ लक्ष्य चर, ऑब्जेक्ट अभी के लिए कचरा कलेक्टर से बच जाएगा। यदि आप इसे DESTROY करना चाहते हैं तो आपको इसके सभी संदर्भों को खोना होगा। मुझे पूरा यकीन नहीं है कि आप DESTROY को DOM एलीमेंट क्यों करना चाहते हैं। शायद आप $ लक्ष्य से नफरत करते हैं। बेचारा $ लक्ष्य, यह तुमने कभी क्या किया?
बोबिसन

52
$ लक्ष्य दयालु है जब वह अकेला होता है, लेकिन वह बुरा हो जाता है जब वह अपने 100.000 क्लोन दोस्तों के आसपास होता है।
सेबेस्टियन ग्रिग्नोली

2
विल .empty()एक समान प्रभाव?
सौरभ नंदा

3
@ सौरभानंद - खाली वस्तु की सामग्री को हटा देगा, लेकिन वस्तु को स्वयं हटा (नष्ट) नहीं करता है।
ल्यूक

46

यदि आप लक्ष्य को पूरी तरह से नष्ट करना चाहते हैं , तो आपके पास कुछ विकल्प हैं। पहले आप ऊपर बताए अनुसार DOM से ऑब्जेक्ट हटा सकते हैं ...

console.log($target);   // jQuery object
$target.remove();       // remove target from the DOM
console.log($target);   // $target still exists

विकल्प 1 - फिर एक खाली jQuery ऑब्जेक्ट (jQuery 1.4+) के साथ लक्ष्य को बदलें

$target = $();
console.log($target);   // empty jQuery object

विकल्प 2 - या संपत्ति को पूरी तरह से हटा दें (यदि आप इसे कहीं और संदर्भित करते हैं तो एक त्रुटि होगी)

delete $target;
console.log($target);   // error: $target is not defined

अधिक पढ़ने: खाली jQuery वस्तु के बारे में जानकारी , और हटाने के बारे में जानकारी


3
delete $targetकाम क्यों नहीं करेगा: perfectionkills.com/understanding-delete/#misconception क्यों नहीं चलेगा $target=nullकाम?
लीजी

@LeeGee - क्या आप यह बताने के लिए अपनी पोस्ट को संक्षेप में बता सकते हैं कि jQuery ऑब्जेक्ट्स के लिए काम क्यों नहीं हटाएगा? जब हम कंसोल.लॉग ($ लक्ष्य) को अंत में देखते हैं तो यह क्यों काम करता है? धन्यवाद।
ल्यूक

मैं इसे लेख से उद्धृत किसी भी बेहतर तरीके से समझा नहीं सकता, जिसे मैंने बहुत विस्तृत पाया।
लीगी

रिकॉर्ड के लिए, यह कंसोल में काम करता है क्योंकि कंसोल जेएस को ईवल के दायरे में मूल्यांकन करता है, जो हटाने की अनुमति देता है। "प्राकृतिक" स्कोप में विविधताएं हटाने योग्य नहीं होंगी। $target=nullइसके बजाय उपयोग करें । यह तेज है और आंतरिक ब्राउज़र ऑप्टिमाइज़ेशन के साथ गड़बड़ नहीं करता है।
बेंडमैन

1
मिटाना ठीक है। इसका सीधा सा मतलब है कि जेएस इंजन द्वारा ब्लॉक को ऑप्टिमाइज़ नहीं किया जाएगा। ज्यादातर मामलों में, यह पूरी तरह अप्रासंगिक है। जब यह एक मुद्दा बन जाता है, तो आप डिलीट का उपयोग करने के तरीकों की तलाश करते हैं। पहले नहीं।
चार्ली मार्टिन

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