【问题标题】:Why aren't the values of selected/checked attributes of child select's and input's not retained when copying HTML from one element to another?将 HTML 从一个元素复制到另一个元素时,为什么不保留子选择和输入的选定/检查属性的值?
【发布时间】:2014-04-12 05:59:40
【问题描述】:

使用 jQuery,当我将一个元素的 HTML 设置为另一个元素的 HTML 时,不会复制复选框输入的选中属性和选择输入的选中属性。为什么是这样?例如,假设“old”类的 div 包含多个子复选框输入,所有这些都被选中。现在我想将“new”类的另一个div的内部HTML设置为“old”类的div的内部HTML,如下所示:

$(".new").html($(".old").html());

所有那些应该被选中的复选框实际上都没有被选中。为什么?

【问题讨论】:

标签: javascript jquery html dom


【解决方案1】:

这是因为元素的当前状态存储在它的 DOM 属性中,而不是它的 HTML 属性中。分配原始 HTML 时,您只是在复制属性。

如果您想复制具有当前状态的元素,请改用clone()

$(".new").replaceWith($(".old").clone());

或者,更短,稍微快一点:

$(".old").clone().replaceAll(".new");

【讨论】:

  • 这解决了大部分问题,因为它复制了复选框的选中属性,但似乎没有将所选值应用于选择输入
  • 我找到了原因——这是 jQuery 的一个错误,他们因为性能问题拒绝修复:bugs.jquery.com/ticket/1294。我找到了解决方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多