首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用cloneNode后如何维护正确的Javascript事件(true)

使用cloneNode后如何维护正确的Javascript事件(true)
EN

Stack Overflow用户
提问于 2019-06-24 05:45:55
回答 2查看 0关注 0票数 0

我有一个包含多行输入的表单元素。将每一行视为我想在Web应用程序中创建的新对象的属性。而且,我希望能够在一个HTTP POST中创建多个新对象。我正在使用Javascript的内置cloneNode(true)方法来克隆每一行。问题是每个输入行还有一个附加到其onclick事件的删除链接:

代码语言:javascript
复制
// prototype based
<div class="input-line">
    <input .../>
    <a href="#" onclick="$(this).up().remove();"> Remove </a>
</div>

单击克隆的输入行的删除链接时,它还会删除从同一个dom对象克隆的所有输入行。在上面的DOM元素上使用cloneNode(true)后,是否可以将“this”对象重新绑定到正确的锚标记?

EN

回答 2

Stack Overflow用户

发布于 2019-06-24 14:11:59

您可以尝试使用innerHTML方法克隆或混合:

代码语言:javascript
复制
var newItem = $(item).cloneNode(false);
newItem.innerHTML = $(item).innerHTML;

另外:我认为cloneNode不会克隆用addEventListener注册的事件。但IE的attachEvent事件克隆。但我可能错了。

票数 0
EN

Stack Overflow用户

发布于 2019-06-24 15:35:06

我在IE7和FF3中对它进行了测试,并且它按预期工作 - 必须有其他东西在继续。

这是我的测试脚本:

代码语言:javascript
复制
<div id="x">
    <div class="input-line" id="y">
        <input type="text">
        <a href="#" onclick="$(this).up().remove();"> Remove </a>
    </div>
</div>

<script>

$('x').appendChild($('y').cloneNode(true));
$('x').appendChild($('y').cloneNode(true));
$('x').appendChild($('y').cloneNode(true));

</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001281

复制
相关文章

相似问题

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