首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用html方法插入元素时,我可以将原始内容保留在DOM中吗?

在使用html方法插入元素时,我可以将原始内容保留在DOM中吗?
EN

Stack Overflow用户
提问于 2012-07-02 20:48:16
回答 5查看 341关注 0票数 2

我发现了一件奇怪的事。当我使用jQuery html()方法将一个元素插入到另一个元素中时,第一个元素将从DOM中删除。我想知道是否可以插入一个元素并将其保存在DOM中。

这是an example

代码语言:javascript
复制
$(document).ready(function(){
    select1 = $("#select-1");
    select2 = $("#select-2");
    $("#gap").html(select2); //Original select2 removed from DOM
});

如您所见,如果将#select-2元素插入到另一个元素中,它将不再可见。但我想插入它,并像以前一样保留原元素。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-02 20:51:48

假设我已经正确理解了您的问题,您可以clone元素:

代码语言:javascript
复制
$(document).ready(function(){
    var select1 = $("#select-1"),
        select2 = $("#select-2");
    $("#gap").html(select2.clone());
});

如果需要保留任何绑定到select2的事件处理程序,可以将true作为参数传递给clone

这是一个working example

注意,我在变量声明之前添加了var关键字。这可以防止变量泄漏到全局作用域(这通常不是您想要的)。

另外,这种形式的html方法似乎没有记录在HTML中(它列出了.html( htmlString ),并声明htmlString应该是一个“HTML字符串”)。

但是,jQuery source显然允许使用字符串、元素或jQuery对象。如果htmlString是字符串,则使用本机innerHTML属性。如果不是,则使用append方法:

代码语言:javascript
复制
if ( typeof value === "string" /* ... */ ) {
    //...
}
if ( elem ) {
    this.empty().append( value ); //In your case we end up here
}
票数 4
EN

Stack Overflow用户

发布于 2012-07-02 20:52:05

将您的代码更改为以下代码

代码语言:javascript
复制
$(document).ready(function(){
    select1 = $("#select-1");
    select2 = $("#select-2");
    $("#gap").html(select2.html());
    select1.show();
});
票数 0
EN

Stack Overflow用户

发布于 2012-07-02 20:52:13

试一试

代码语言:javascript
复制
$(document).ready(function(){
    select1 = $("#select-1");
    select2 = $("#select-2").html();
    $("#gap").html(select2);
    select1.show();
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11294014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档