如何使用jQuery检索DOM的副本,仅在内存中进行修改

时间:2015-05-11 17:18:52

标签: jquery html dom

是否可以使用jQuery将DOM的特定部分作为jQuery对象捕获到变量中,然后我可以在不影响DOM本身的情况下执行某些操作。当我说我不想影响DOM时,我不希望用户看到更改,但不能简单地通过CSS隐藏。

方案如下。我想获取一个特定div的内容,对其进行一些更改,将内容包围在另一个标记中,然后通过ajax将其发布回服务器以生成PDF文档。

现在我正在抓住我需要的div:

var mainDiv = $(sourceSelector + " div").filter(function (index, element) {
if ($(this).hasClass("ABC_Page") && $(this).is(":visible")) return true;
});

问题是我是否会这样做:

$mainDiv.find("#MyOtherDiv").append("<span>New content</span>");

我看到页面上的更改,当我只想在内存中复制它们时。基于jQuery文档,我认为filter()会创建一个新对象,而不会将更改反映回网页。

由于

3 个答案:

答案 0 :(得分:0)

您应该使用.clone()来制作副本。然后,您可以在插回文档之前修改它们(或者不是在您的情况下)。

http://api.jquery.com/clone/

答案 1 :(得分:0)

看一下clone()jQuery函数。 https://api.jquery.com/clone/

答案 2 :(得分:0)

您可以使用.clone()方法:https://api.jquery.com/clone/

如文件中所述:

  

注意:使用.clone()方法时,可以修改克隆   元素或其内容在(重新)插入之前   文档。

只需使用以下语法:$clonedElement = $(selector).clone( true )