2010-06-07 19 views
7

की स्ट्रिंग प्रस्तुति प्राप्त करें मेरे पास थोड़ा सा नजर आया है और मुझे एक समस्या का समाधान करने में कुछ कठिनाई हो रही है।एक jquery DOM ऑब्जेक्ट के पूरे HTML

मैं मूल रूप से HTML की एक स्ट्रिंग करता हूं, मैं इसे एक JQuery DOM ऑब्जेक्ट में परिवर्तित करता हूं ताकि मैं आसानी से JQuery के .remove() का उपयोग करके एक निश्चित कक्षा को हटा सकूं। यानी,

var radHtml = editor.get_html(); 

var jqDom = $(radHtml); 

$(".thickbox", jqDom).remove(); 
$(".thickboxcontent", jqDom).remove(); 

editor.set_html(this.innerHTML); 

नोट: HTML एक RADEditor पाठ संपादक में सामग्री से ली गई है इसलिए कोई माता पिता HTML टैग कर रहे हैं, तो के रूप में देख सकते हैं इस प्रकार है:

<p>This is a header</p> 
<p>this is some content followed by a table </p> 
<a href="#TB_inline?height=350&amp;width=400&amp;inlineId=myOnPageContent0" class="thickbox">Test Thickbox</a> 
<div id="myOnPageContent0" class="thickboxcontent"> 
<table class="modal"> 
    <thead> 
    </thead> 
    <tbody> 
     <tr> 
      <td>item</td> 
      <td>result</td> 
     </tr> 
     <tr> 
      <td>item 1</td> 
      <td>1</td> 
     </tr> 
     <tr> 
      <td>item 2</td> 
      <td>2</td> 
     </tr> 
     <tr> 
      <td>item 3</td> 
      <td>3</td> 
     </tr> 
    </tbody> 
</table> 
</div> 

यहाँ jqDom.html है() के ऊपर HTML से प्रस्तुत करती है:

"This is a header" 

अगर वहाँ एक आसान तरीका यह करने के लिए था मैं सोच रहा था - कुछ html है और (इस मामले divs में) सभी तत्वों को दूर एक निश्चित वर्ग है (लेकिन उनके छोड़ने सामग्री)। JQuery का उपयोग नहीं करना है, लेकिन मैं करना चाहता हूँ।

डीओएम ऑब्जेक्ट में हेरफेर करना ठीक है - यह पूरी तरह से पूर्ण डीओएम ऑब्जेक्ट को एक स्ट्रिंग के रूप में प्राप्त कर रहा है जिसमें मुझे समस्या है।

कोई भी मदद बहुत जटिल होगी। धन्यवाद।

+0

जब आप कहते हैं .html() केवल पहला तत्व प्राप्त करता है - क्या आपका मतलब है कि एक ही पहचाने गए कंटेनर के अंदर कई भाई तत्व हैं, और केवल पहले चुना गया है? क्या आप प्रश्न में एचटीएमएल का एक (अत्यधिक कम) नमूना पोस्ट कर सकते हैं? –

+0

नमूना – Scozzard

उत्तर

1
var radHtml = editor.get_html(); 

var jqDom = $(radHtml); 
jqDom.wrap('div'); //dont remember if thats ok or u need to asign it in the jqDom again 
$(".thickbox", jqDom).remove(); 
$(".thickboxcontent", jqDom).remove(); 

editor.set_html(jqDom.html()); 

हो सकता है कि मदद कर सकता है

5

आप अपने चयनकर्ता के प्रत्येक मिलान तत्व के HTML चाहते हैं, एक map करने का प्रयास करें:

var allHtmls = jqDom.find('.thickbox').map(function(){ 
    return this.innerHTML; 
}); 

इसके अलावा, यह लग रहा है आप unwrap जो jQuery में जोड़ा गया था का उपयोग करना चाहें तरह 1.4 + (http://api.jquery.com/unwrap/)

jqDom.find('.thickbox').children().unwrap();

+0

में नमूना जोड़ा गया जवाब के लिए धन्यवाद, हालांकि मैं प्रत्येक मिलान तत्व का HTML नहीं चाहता हूं, बल्कि परिवर्तनों के बाद पूरे jqDom के लिए केवल HTML चाहता हूं। क्योंकि मैं किसी तृतीय पक्ष संपादक से बात कर रहा हूं, मुझे संपादक से सभी HTML (सभी अच्छे) मिलते हैं और डीओएम (जो ठीक है) में कनवर्ट करते हैं, JQuery (जो ठीक है) का उपयोग करके डोम में परिवर्तन करते हैं। यह JQuery के माध्यम से परिवर्तन किए जाने के बाद डीओएम (संपूर्ण एचटीएमएल) के स्ट्रिंग प्रस्तुति की वापसी है जो मुद्दा है। रैप/अनैप का उपयोग करना मैनिपुलेशन के लिए अच्छा लगता है, लेकिन इस समय सभी जी है। – Scozzard

+3

फिर उस HTML को लपेटें जिसे आप इसे एक div में भेज रहे हैं, और उसके बाद 'html' पर कॉल करें। इस तरह यह jquery ऑब्जेक्ट पर एकाधिक तत्वों के रूप में संग्रहीत नहीं है। –

+0

+1 क्योंकि आपकी अंतिम टिप्पणी उत्तर – Scozzard

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