克隆的HTML标记丢失事件

时间:2019-06-22 21:45:15

标签: javascript jquery

我有一个不可见的TR行,它被jQuery通过函数clone(true,true)克隆为$ cloned,但是TR内部某些元素的onclick事件丢失了。 然后我通过以下方式将正确的表附加到:

jQuery(parent).closest('table').find('tbody').append($cloned);

下一步要检查什么或克隆事件要做什么?

1 个答案:

答案 0 :(得分:-1)

旧:这是设计使然,克隆不会复制事件处理程序。

新功能:显然,jQuery克隆确实复制事件处理程序。尽管下面的两个选项仍然是有效的方法,但是可能会有一些关闭作为事件处理程序,该处理程序持有“错误的”(从新节点的角度来看)引用,因此事件处理程序似乎不起作用。

两个选项:

  1. 克隆然后重新分配处理程序。如果您的代码写得很好,通常不会有问题。

  2. 将事件处理程序绑定到外部容器(可能是正文或文档),例如:

$(document).on('click', '.my-special-button', (e) => { ... });

第二种方法可能还需要重写。不过,这是一个有效的选择。要了解更多信息,请查找“委派事件处理程序”,例如此处:https://api.jquery.com/on/

可以同时遵守这两个规则,这会更好。