Jquery 当使用html方法插入元素时,是否可以将原始元素保留在DOM中?

Jquery 当使用html方法插入元素时,是否可以将原始元素保留在DOM中?,jquery,Jquery,我发现了一件奇怪的事。当我使用jQueryHTML方法将一个元素插入另一个元素时,第一个元素将从DOM中删除。我想知道是否可以插入一个元素并将其保存在DOM中 这是: 如您所见,如果将select-2元素插入到另一个元素中,它将不再可见。但是我想插入它,并保持基本元素与以前一样。假设我正确理解了您的问题,您可以使用以下元素: $(document).ready(function(){ var select1 = $("#select-1"), select2 = $("#

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

这是:


如您所见,如果将select-2元素插入到另一个元素中,它将不再可见。但是我想插入它,并保持基本元素与以前一样。

假设我正确理解了您的问题,您可以使用以下元素:

$(document).ready(function(){
    var select1 = $("#select-1"),
        select2 = $("#select-2");
    $("#gap").html(select2.clone());
});
如果需要保留绑定到select2的任何事件处理程序,可以将true作为参数传递给clone

这是一个例子

请注意,我在变量声明之前添加了var关键字。这可以防止变量泄漏到您通常不希望的全局范围中

另一方面,这种形式的html方法似乎没有记录在它列出的jQueryAPI.html htmlString中,并且声明htmlString应该是一个html字符串

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

if ( typeof value === "string" /* ... */ ) {
    //...
}
if ( elem ) {
    this.empty().append( value ); //In your case we end up here
}

假设我正确理解了您的问题,您可以使用以下元素:

$(document).ready(function(){
    var select1 = $("#select-1"),
        select2 = $("#select-2");
    $("#gap").html(select2.clone());
});
如果需要保留绑定到select2的任何事件处理程序,可以将true作为参数传递给clone

这是一个例子

请注意,我在变量声明之前添加了var关键字。这可以防止变量泄漏到您通常不希望的全局范围中

另一方面,这种形式的html方法似乎没有记录在它列出的jQueryAPI.html htmlString中,并且声明htmlString应该是一个html字符串

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

if ( typeof value === "string" /* ... */ ) {
    //...
}
if ( elem ) {
    this.empty().append( value ); //In your case we end up here
}

将您的代码更改为此

$(document).ready(function(){
    select1 = $("#select-1");
    select2 = $("#select-2");
    $("#gap").html(select2.html());
    select1.show();
});

将您的代码更改为此

$(document).ready(function(){
    select1 = $("#select-1");
    select2 = $("#select-2");
    $("#gap").html(select2.html());
    select1.show();
});
试一试

试一试

您直接引用的是DOM元素,而不仅仅是它的内容!这就是为什么要移动元素而不是克隆它

要执行后者,请编写:

$("#gap").html(select2.clone());

您直接引用的是DOM元素,而不仅仅是它的内容!这就是为什么要移动元素而不是克隆它

要执行后者,请编写:

$("#gap").html(select2.clone());


实际上,有几个命令可以实现这一点。 我通常使用:insertAfter、insertBefore、before、after、append、appendTo、prepend、prependTo

常用的使用方法: html

当然有几种方法可以做到这一点,但我认为这可以完成工作。
下面是您修改过的示例:

实际上,有几个命令可以执行此操作。 我通常使用:insertAfter、insertBefore、before、after、append、appendTo、prepend、prependTo

常用的使用方法: html

当然有几种方法可以做到这一点,但我认为这可以完成工作。
下面是您修改过的示例:

您是否在问为什么select-2会从DOM中的位置删除并移动到gap中,而不是移动select-2的副本?@CRANO和TheC0d3r-OP希望看到三个select元素。您应该只能看到2。您是否在问为什么select-2会从DOM中的位置删除并移动到gap中,而不是移动select-2的副本?@CRANO和TheC0d3r-OP希望看到三个select元素。您应该只能看到2。将参数true添加到clone,以便它克隆事件处理程序。哦,对不起,我在评论时它不在那里,或者我跳过了Thanx,另外一个好方法是select2.clone.appendtocap@jumancy-不客气:与该示例不同的是,它将附加元素,而不是用该元素替换内容。将参数true添加到clone,以便它克隆事件处理程序。哦,对不起,我在评论时它不在那里,或者我跳过了Thathanx,另外一个好方法是select2.clone.appendtocap@jumancy-不客气:与该示例不同的是,它将附加元素,而不是用该元素替换内容。html是不正确的,因为它在元素内部使用html代码,而不是整个元素html是不正确的,因为它在元素内部使用html代码,而不是整个元素
var select2 = $("#select-2").html();
$("#gap").html(select2);
<div id="somediv">
    some content
</div>
$(document).ready(function(){
  $("<span/>").html("this is what I'm appending").appendTo("#somediv");
});
$(document).ready(function(){
  var theclone = $("#select-2").clone();
  theclone.appendTo("#gap");
});