我有一个不可见的TR行,它被jQuery通过函数clone(true,true)克隆为$ cloned,但是TR内部某些元素的onclick事件丢失了。 然后我通过以下方式将正确的表附加到:
jQuery(parent).closest('table').find('tbody').append($cloned);
下一步要检查什么或克隆事件要做什么?
答案 0 :(得分:-1)
旧:这是设计使然,克隆不会复制事件处理程序。
新功能:显然,jQuery克隆确实复制事件处理程序。尽管下面的两个选项仍然是有效的方法,但是可能会有一些关闭作为事件处理程序,该处理程序持有“错误的”(从新节点的角度来看)引用,因此事件处理程序似乎不起作用。
两个选项:
克隆然后重新分配处理程序。如果您的代码写得很好,通常不会有问题。
将事件处理程序绑定到外部容器(可能是正文或文档),例如:
$(document).on('click', '.my-special-button', (e) => { ... });
第二种方法可能还需要重写。不过,这是一个有效的选择。要了解更多信息,请查找“委派事件处理程序”,例如此处:https://api.jquery.com/on/。
可以同时遵守这两个规则,这会更好。