2009-11-26 16 views
32

क्या एक ऐसे डोमेन तत्व को निकालना संभव है जिसमें शरीर टैग के अलावा कोई अन्य माता-पिता न हो? मुझे पता है कि यह jquery जैसे ढांचे के साथ आसान होगा, लेकिन मैं सीधे जावास्क्रिप्ट पर चिपकने की कोशिश कर रहा हूं।अपने माता-पिता को जानने के बिना डोम तत्व निकालें?

कोड यह मैं इसे अन्यथा करने के लिए मिल गया है:

function removeElement(parentDiv, childDiv){ 
    if (childDiv == parentDiv) { 
      alert("The parent div cannot be removed."); 
    } 
    else if (document.getElementById(childDiv)) {  
      var child = document.getElementById(childDiv); 
      var parent = document.getElementById(parentDiv); 
      parent.removeChild(child); 
    } 
    else { 
      alert("Child div has already been removed or does not exist."); 
      return false; 
    } 
} 

धन्यवाद!

+1

एफवाईआई 'बॉडी' एक पूरी तरह से वैध माता पिता है। –

+0

प्रत्येक तत्व में माता-पिता तत्व – iConnor

+0

@connorspiracist 'दस्तावेज़' –

उत्तर

82

आप तत्वों के जनक प्राप्त करने के लिए, फिर से कि

function removeElement(el) { 
el.parentNode.removeChild(el); 
} 

अद्यतन तत्व निकाल

आप HTMLElement पर एक नई पद्धति के रूप में इस सेट कर सकते हैं सक्षम होना चाहिए :

HTMLElement.prototype.remove = function() { this.parentNode.removeChild(this); return this; } 

और फिरकरें

+1

सही उत्तर में अपडेट करना क्योंकि यह अधिक मॉड्यूलर/समावेशी है विभिन्न परिदृश्यों के। धन्यवाद। – Matrym

5
document.body.removeChild(child); 
+2

@ अज्ञात: यह उत्तर केवल उन नोड्स के लिए काम करता है जो 'document.body' के तत्काल वंशज हैं। अन्य उत्तर 'document.body' के वंशज सहित सभी मामलों के लिए काम करते हैं। –

+1

उपरोक्त के रूप में, यह उत्तर केवल उन तत्वों पर काम करता है जो शरीर के तत्काल वंशज हैं। क्या कोई इसे नियंत्रित कर सकता है? –

+1

प्रश्न पढ़ें: «एक डोम तत्व जिसमें शरीर टैग के अलावा कोई माता-पिता नहीं है», इसलिए मेरी प्रतिक्रिया पूरी तरह से मूल्यवान है – Gregoire

16

मुझे लगता है कि आप कुछ की तरह कर सकते हैं (जो भी तत्व वापस आ जाएगी) ...

var child = document.getElementById(childDiv); 
//var parent = document.getElementById(parentDiv); 
child.parentNode.removeChild(child); 

कि अधिक जानकारी के लिए node.parentNode देखें। क्रोम में

12
childDiv.remove(); 

काम करता है 25.0.1364.155

नोट इस IE11 या ओपेरा मिनी में काम नहीं करता है कि लेकिन अन्य सभी ब्राउज़रों द्वारा समर्थित है।

यहाँ देखें: reference to childnode-remove on caniuse

+1

वास्तव में अधिक वोट-वोटों का हकदार है – shabunc

+2

आईई 11 – Seb

+1

पर काम नहीं कर रहा है जैसा कि यहां लिखा गया है https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove - एक पॉलीफिल – commonpike

3

तत्व निकाल रहा है outerHTML संपत्ति

remElement(document.getElementById('title')); 
remElement(document.getElementById('alpha')); 

function remElement(obj) { 
obj.outerHTML=""; 
} 
1

इस समारोह का उपयोग कर बस आईडी का उपयोग कर एक तत्व को दूर करने के:

function removeElement (id) { 
    document.getElementById(id).parentElement.removeChild(document.getElementById(id)); 
} 
1

ठीक है, आप मूल रूप से करने की जरूरत नहीं डोम से डीओएम तत्व को हटाने के लिए अभिभावक को जानें, नीचे दिए गए कोड को देखें, जावास्क्रिप्ट में नोड तत्व को हटाने का आदेश कैसा है:

Element + parentNode + removeChild(Element);

आप हम पहले तत्व को खोजने के देखते हैं, तो .parentNode का उपयोग कर और उसके बाद बच्चे जो तत्व फिर से है निकालने के लिए, तो हम सब पर माता पिता को पता है की जरूरत नहीं है के रूप में!

तो अब असली कोड देखो:

var navigation = document.getElementById('navigation'); 
if(navigation) { 
    navigation.parentNode.removeChild(navigation); 
} 

या एक समारोह

function removeNode(element) { 
    if(element) { //check if it's not null 
    element.parentNode.removeChild(element); 
    } 
} //call it like : removeNode(document.getElementById('navigation')); 

इसके अलावा jQuery हटाने जो व्यापक रूप से की तरह का उपयोग किया जाता है,() फ़ंक्शन के रूप में:

$('#navigation').remove(); 

इसके अलावा देशी ChildNode.remove() है जो आईई और पुराने ब्राउज़र में नहीं है, लेकिन आप इसे पॉलीफिल कर सकते हैं, सु देखें MDN से ggested polyfill:

polyfill
निम्न कोड के साथ आप इंटरनेट एक्सप्लोरर 9 में निकालें() विधि polyfill कर सकते हैं और उच्च :

//from:https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md 
(function (arr) { 
    arr.forEach(function (item) { 
    if (item.hasOwnProperty('remove')) { 
     return; 
    } 
    Object.defineProperty(item, 'remove', { 
     configurable: true, 
     enumerable: true, 
     writable: true, 
     value: function remove() { 
     this.parentNode.removeChild(this); 
     } 
    }); 
    }); 
})([Element.prototype, CharacterData.prototype, DocumentType.prototype]); 

आप जानकारी चाहते हैं इसके बारे में अधिक जानकारी, एमडीएन पर इस पर जाएं।

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