在变量中放入一个完整的dom,并使用jquery删除元素

时间:2014-06-11 18:22:28

标签: jquery html

我在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)

任何帮助都一如既往地受到赞赏

2 个答案:

答案 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);
        }