【问题标题】:Using clone() and html() to copy element does not retain old or new value使用 clone() 和 html() 复制元素不保留旧值或新值
【发布时间】:2013-08-21 15:45:22
【问题描述】:

我正在使用以下代码来复制一个元素:

$($('<div></div>').html($('#elememt').clone())).html()

这可行,但不会保留原始元素的值。我什至这样尝试过:

$($('<div></div>').html($('#elememt').clone().val('test'))).html()

没有运气。

知道为什么会发生这种情况以及如何解决吗?

【问题讨论】:

  • 您发布的 sn-ps 有语法错误.. ) 太多了。有更多上下文的小提琴会很有帮助。
  • 我在复制时遗漏了部分代码。固定。
  • $('
    ').html ?这有一些问题。选择器不能包含带有
    的标签
  • @Krishna 他没有选择 div,他是creating one

标签: jquery html clone


【解决方案1】:

你应该使用这个

$(selector).clone(true);

此布尔值指示是否应将事件处理程序与元素一起复制。默认值为 false 。因此,当我们在不传递任何布尔值的情况下调用 .clone() 方法时,它只是复制了元素,而不是附加到它的事件处理程序。但是,当我们传递值 true 时,它​​会复制元素和附加到它的任何事件处理程序。

【讨论】:

    【解决方案2】:

    在你的例子中有很多语法错误,太多了) 复制一个元素就足够了:

    var new_element = $('#element').clone();
    new_element.val('test');
    

    然后在你想要的地方添加新值:

    $('#somediv').append(new_element);
    

    【讨论】:

      【解决方案3】:

      $('&lt;div&gt;&lt;/div&gt;') 在内存中创建一个新的 jQuery 包装元素(此语法也可以压缩为 $('&lt;div/&gt;')),但您不会将它注入到任何地方的 DOM 中。

      您也没有解释您尝试做的事情的预期结果是什么,因此很难为您的特定问题提供准确的解决方案。

      不过,请在下面的链接演示中查看一个工作示例。

      DEMO

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-17
        • 2019-07-08
        • 1970-01-01
        • 2018-05-27
        • 2016-03-08
        相关资源
        最近更新 更多