我已经有点了解并且在解决我遇到的一个小问题时遇到了一些困难。
我基本上有一串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&width=400&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对象作为我遇到问题的字符串完整地获取。
任何帮助都会得到很多帮助。感谢。
答案 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());
也许这可以帮助