2012-10-29 25 views
23

ऐसा लगता है कि उसका कोई त्वरित जवाब होगा, लेकिन मुझे कोई नहीं मिल रहा है। शायद मैं गलत शब्द खोज रहा हूँ? कृपया कोई पुस्तकालय कृपया, हालांकि मुझे क्रॉस-ब्राउज़र फ़ॉलबैक की आवश्यकता नहीं है, मैं इस परियोजना के सभी नवीनतम संस्करणों को लक्षित कर रहा हूं।querySelectorAll का उपयोग करके प्राप्त किए गए तत्वों को कैसे निकालें?

मैं कुछ तत्वों हो रही है:

element = document.querySelectorAll(".someselector"); 

मार!

मैं इन तत्वों को कैसे हटा सकता हूं? मैं क्या खो रहा हूँ? क्या मुझे उनके माध्यम से लूप करना है और element.parentNode.removeChild(element); चीज करना है, या क्या कोई साधारण काम है जो मुझे याद आ रही है?

उत्तर

31

हां, आप लगभग सही हैं। .querySelectorAllजमे हुए नोडलिस्ट लौटाता है। आपको इसे फिर से करने और चीजों को करने की जरूरत है।

Array.prototype.forEach.call(element, function(node) { 
    node.parentNode.removeChild(node); 
}); 

यहां तक ​​कि अगर आप केवल एक परिणाम मिला है, तो आप, सूचकांक के माध्यम से इसे उपयोग करने में, जैसे

elements[0].parentNode.removeChild(elements[0]); 

आप केवल एक तत्व के लिए क्वेरी करने के लिए चाहते हैं की आवश्यकता होगी बजाय .querySelector का उपयोग । वहां आपको सूचकांक के साथ पहुंचने की आवश्यकता के बिना नोड संदर्भ प्राप्त करें।

+0

काम करता है! बहुत अच्छे धन्यवाद! –

+0

@jAndy उत्तर के लिए धन्यवाद। मुझे नोडलिस्ट के पहले नोड को हटाने की जरूरत है। क्या पहले नोड को सीधे हटाने का कोई तरीका है? – Raghvendra

+1

ठीक है, आप बस 'तत्व सूची [0] .remove();' आज के डीओएम एपीआई में कॉल कर सकते हैं। – jAndy

8

NodeList के बाद से पहले से ही समर्थन करता है, forEach तुम सिर्फ उपयोग कर सकते हैं

document.querySelectorAll(".someselector").forEach(e => e.parentNode.removeChild(e));
<div> 
 
    <span class="someselector">1</span> 
 
    <span class="someselector">2</span> 
 
    Should be empty 
 
</div>

NodeList.prototype.forEach() देखें। बस ध्यान रखें कि इंटरनेट एक्सप्लोरर समर्थित नहीं है।

संपादित करें: इंटरनेट एक्सप्लोरर समर्थन। आप भी उपरोक्त कोड IE में काम कर करना चाहते हैं, तो बस अपने जे एस कहीं से पहले कोड के इस टुकड़े जोड़ें:

if (!NodeList.prototype.forEach && Array.prototype.forEach) { 
    NodeList.prototype.forEach = Array.prototype.forEach; 
} 

..और NodeList IE में अचानक forEach समर्थन के साथ-साथ होगा।