मेरे पास HTML टैग का घोंसला सेट है और मैं टेक्स्ट के बिना सभी टैग और उनके बच्चों को हटाना चाहता हूं।jQuery रिक्त रूप से रिक्त बच्चों को हटाएं
उदाहरण:
<div id="mydiv">
<span></span>
<span><br></span>
<span> <span><br></span> </span>
<span> <span><br> <span></span> </span> </span>
<span> <img src="someimg.jpg" width="100" height="100"> </span>
<span>some text</span>
</div>
तो मैं चाहता हूँ चित्र और पाठ के साथ फैला रहने के लिए और दूसरों को छोड़ दें।
मैं अपने समारोह के बाद कि परिणाम की जरूरत है:
<div id="mydiv">
<span> <img src="someimg.jpg" width="100" height="100" /> </span>
<span>some text</span>
</div>
मैं पता लगा, यह या तो जावास्क्रिप्ट या 'अपनी विधि .children साथ jQuery() यहाँ से रिकर्सिवली किया जा रहा है मेरे कोड मैं है उपयोग करने के लिए चाहता था, लेकिन मैं समझ नहीं सकता प्रत्यावर्तन का निर्माण करने के लिए कैसे:
var remove_filter = function() {
children= $(this).children();
for (var i = -1, l = children.length; ++i < l;) {
if ($(children[i]).text() == "") {
$(children[i]).remove();
}
//may be recursion here
//else if(){
//}
}
return $(this).text() == "" && $(this).children().length == 0;
}
$('#mydiv').find('span').filter(remove_filter).remove();
इस कोड टूट गया है, इसे हटा देता है और छोड़ देता है खाली फैला ... कैसे एक मैं प्रत्यावर्तन के साथ अपने परिणाम हासिल?
संपादित
यहाँ मेरी jsfiddle है: http://jsfiddle.net/EGVQH/
संपादित 2 समय
मैं सही जवाब में एक बग मिला है, लेकिन यह छोटा है।
<div id="mydiv">
<span> Some text</span>
<span> <img src="someimg.jpg" width="100" height="100" /> </span>
<span>some text</span>
</div>
पिछले "सही" मेरे सवाल का जवाब <span> <br> Some text</span>
पर गलत परिणाम दे रहा था: मैं में यह परिणाम के लिए मान
<div id="mydiv">
<span> <br> Some text</span>
<span> <span><br> <span></span> </span> </span>
<span> <img src="someimg.jpg" width="100" height="100"> </span>
<span>some text</span>
</div>
: अगर मैं इस तरह कोड है। कुछ जवाब परीक्षण के बाद गलत थे। http://jsfiddle.net/EGVQH/2/
यह पुनरावर्ती होने के लिए है? – Aprillion
मुझे लगता है कि यह होना चाहिए। क्योंकि घोंसले का स्तर 10-20 तत्वों तक हो सकता है, इसलिए 20+ "के लिए" मंडल खराब हैं :) – Feanor
यदि किसी तत्व में आंतरिक टेक्स्ट नहीं है, तो उसके किसी भी बच्चे के पास या तो छवियों के परीक्षण के बाद शीर्ष माता-पिता हो सकते हैं बच्चों की जांच किए बिना सुरक्षित रूप से हटा दिया .. या मैं यहाँ क्या याद कर रहा हूँ? – Aprillion