我在div中有一个div:
<div id="foo">
<div id="bar">
<div id="to_delete">
[changing content]
</div>
</div>
</div>
我想要的是让它在我的页面上可见,就像它一样。但是我将#foo中的内容发送到带有ajax的服务器(工作正常)。
我不想从该内容发送的内容是:
<div id="to_delete">
[changing content]
</div>
在发送之前需要将其过滤掉。所以我需要一种方法将一个完整的DOM放在变量中,编辑该变量然后发送它。
为了实现这一点,我使用了remove()和parseHtml(),它没有做它需要做的事情。
我目前的解决方案是(不起作用的解决方案):
// put html in a variable as a string
var html = $('#foo').html();
// remove from parsed html and return a string which is ready to be sent
var htmlParsed = $.parseHTML(html).remove('#to_delete').html();
// send htmlParsed (this part needs no code)
任何帮助都一如既往地受到赞赏
答案 0 :(得分:6)
由于#to_delete
不是所选元素之一,remove(<selector>)
在此处不起作用。我会克隆节点,删除元素,然后将其转换为HTML:
var clone = $('#foo').clone();
clone.find('#to_delete').remove();
var html = clone.html();
答案 1 :(得分:0)
你可以删除你不想要的html,然后复制其余的html,然后再插入删除的html。
function test(){
var deletedHtml = $('#to_delete').html(), serverHtml;
$('#to_delete').remove();
serverHtml = $('body').html();
$('#bar').html(deletedHtml);
console.log(serverHtml);
}