获取jquery DOM对象的整个HTML的字符串表示形式

时间:2010-06-07 03:33:19

标签: jquery dom

我已经有点了解并且在解决我遇到的一个小问题时遇到了一些困难。

我基本上有一串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并删除所有具有某个类(但保留其内容)的元素(在本例中为div)。 JQuery不必使用,但我想。

操作DOM对象很好 - 它将完整的DOM对象作为我遇到问题的字符串完整地获取。

任何帮助都会得到很多帮助。感谢。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分: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());

也许这可以帮助