当前位置: 首页 > 面试题库 >

jQuery clone()不克隆事件绑定,即使使用on()

汪泓
2023-03-14
问题内容

我创建了一系列用于移动Web应用程序的自定义jQuery事件。他们工作得很好,已经过测试。但是,我遇到了一个小问题,难以理解。

我正在.clone()DOM中使用一些元素,其中包含一个按钮。该按钮绑定了一些自定义事件(这些事件使用绑定.on()),但是。不幸的是,当我使用jQuery时.clone(),未保留绑定,我必须再次添加它们。

有人遇到过这种情况吗,有人知道有可能解决此问题吗?我以为使用.on()应该保留现在或将来存在的元素的绑定?


问题答案:

我认为您应该使用.clone()方法的重载:

$element.clone(true, true);

clone([withDataAndEvents] [,deepWithDataAndEvents])

withDataAndEvents :一个布尔值,指示是否应将事件处理程序和数据与元素一起复制。默认值为false。

deepWithDataAndEvents
:一个布尔值,指示是否应复制克隆元素的所有子级的事件处理程序和数据。默认情况下,其值与第一个参数的值匹配(默认为false)。

注意.on()不要将事件实际上绑定到目标,而是绑定到要委派的元素。因此,如果您有:

$('#container').on('click', '.button', ...);

这些事件实际上绑定到#container。当发生单击.button元素时,它会冒泡到该#container元素。触发事件的元素将根据的选择器参数进行评估.on(),如果匹配,则执行事件处理程序。这就是事件委托的工作方式。

如果克隆元素#container,则必须使用事件和数据进行深度克隆,.on()以保留要进行的绑定。

如果您.on()在的父项上使用,则没有必要#container



 类似资料:
  • 问题内容: 很久很久以前有一堂课: 在对象中,我们有: 而Cloneable接口是: 我应该如何克隆呢? 问题答案: 我认为当前的绿色答案不好 ,为什么您会问? 它添加了很多代码 它要求您列出所有要复制的字段并执行此操作 当使用clone()时,这对列表不起作用(这是HashMap的clone()所说的:返回此HashMap实例的浅表副本:键和值本身不会被克隆。)因此您最终需要手动进行操作(这使得

  • 我别无选择,我必须使用git clone与ssh,所以在那之后,当我使用作曲家安装,它将下载一些依赖使用git clone ssh从比特桶当我尝试运行git clone使用SSH, 我得到这个输出 我不知道从哪里得到RSA密钥指纹SHA256: zzXQOXSRBEiUtuE8AikJYKwbHaxvSc0ojez9YXaGp1A当使用命令行ssh-keygen生成私钥和公钥时,我得到了RSA密钥

  • 问题内容: 我希望以编程方式克隆小部件。我可以使用Dom.clone在Widget内克隆Element,但似乎无法从此克隆的元素创建Widget。这可能吗? 还有另一种克隆小部件的方法吗? 问题答案:

  • 本文向大家介绍为什么要使用克隆?相关面试题,主要包含被问及为什么要使用克隆?时的应答技巧和注意事项,需要的朋友参考一下 克隆的对象可能包含一些已经修改过的属性,而 new 出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”就靠克隆方法了。

  • 我正在使用Symfony 2.3.4 在我的控制台上,我创建了sylius/sylius项目,在安装sensio/distribution捆绑包之前,我更喜欢dist 作曲家抛出此错误消息 我试过: > 编辑sylius/composer.json,并将seno/分布-包:2.3.修改为seno/分布-包:2.2.-dev 在C:\wamp\www\sylius中打开一个shell。将app/co

  • react中绑定事件为啥不绑定在ul上使用事件代理而直接绑定在li上?