jQuery 将 div 加载到另一个没有 .html() 方法的

Posted

技术标签:

【中文标题】jQuery 将 div 加载到另一个没有 .html() 方法的【英文标题】:jQuery load div into another without .html() method 【发布时间】:2015-05-23 14:32:36 【问题描述】:

我有一个 div(我们称之为土豆),我想出现在另一个 div(食物)中。执行此操作的典型方法是:

$("#food").html ( $("#potatoes").html()); 

但是,这并不能实现我想要的。 jQuery 似乎没有使用实际的“土豆” div,而是将该内容 复制 到 food div 中,而原始内容仍然存在于浏览器中。

我希望 ACTUAL div(土豆)从其位置消失并出现在容器 div(食物)中,而无需执行 .hide() ... 或类似方法。

原因是什么?我在土豆 div 中有启用和禁用按钮的选择器,它们似乎触发了原始土豆 div 内容,但不是已加载到食物 div 中的副本。

这有意义吗?谁能解释一下为什么会这样以及我应该怎么做?

旁注:

$(document).on('click','#button-loaded-with-page',  ,function(e)
    this.disabled = true;
    $('#button-inside-potatoes-div').hide();
);

上面的例子是我想要实现的,但是当土豆内容通过.html() 方法加载到食物中时,并没有隐藏按钮。相反,它会隐藏页面上的原始按钮,而不是复制的按钮。

我想要达到的目标:https://jsfiddle.net/o9kshscj/6/

【问题讨论】:

【参考方案1】:

您可以将对象传递给html()

$("#a").html($("#b"));

演示:Fiddle

【讨论】:

jQuery 文档没有提到任何关于能够将 jQuery 对象传递到 html() 的内容。出于兴趣,这是如何工作的? @RGraham 在html 代码中你可以找到if ( elem ) this.empty().append( value ); @ArunPJohny 有趣!他们真的应该记录下来。不敢相信你已经记住了来源:) @RGraham 我之前在某处看到它时也遇到过同样的问题。所以去源头搜索并找到了这个..现在我记得它我去了源头并复制了它跨度> 【参考方案2】:

您可以使用append 更改父级。这会将#potatoes 对象从其当前的DOM 位置移动#food div 作为一个孩子

$("#food").append($("#potatoes"));

【讨论】:

【参考方案3】:

您可以像这样替换后删除 div:

$("#a").html($("#b").html());
$("#b").remove();
$("#button-to-enable").prop("disabled", false);

【讨论】:

以上是关于jQuery 将 div 加载到另一个没有 .html() 方法的的主要内容,如果未能解决你的问题,请参考以下文章

使用 Jquery 加载函数从空 div 中的另一个页面加载 div

jQuery 将一个 div id 中的 <ul> 克隆到另一个 div

如何将一个div的内容克隆到另一个div

div元素监听resize的方法

Jquery移动html到另一个标签下

使用 Jquery 一个接一个地为 Div 设置动画