Jquery 如何克隆节点,复制数据而不复制事件处理程序?

Jquery 如何克隆节点,复制数据而不复制事件处理程序?,jquery,jquery-1.8,jquery-clone,Jquery,Jquery 1.8,Jquery Clone,jQuery的clone函数如下所示: .clone([withDataAndEvents][,deepWithDataAndEvents]) 带数据和事件:表示 事件处理程序和数据是否应与 元素 deepWithDataAndEvents:一个布尔值,指示是否为所有 应复制克隆元素的子元素 这两个参数都会影响数据和事件。是否可以只保存数据,而不保存事件?基本上,我理想的clone函数如下所示: .idealClone([withData][,withEvents][,deepWithData]

jQuery的
clone
函数如下所示:

.clone([withDataAndEvents][,deepWithDataAndEvents])

带数据和事件:表示 事件处理程序和数据是否应与 元素

deepWithDataAndEvents:一个布尔值,指示是否为所有 应复制克隆元素的子元素

这两个参数都会影响
数据
事件
。是否可以只保存数据,而不保存事件?基本上,我理想的
clone
函数如下所示:

.idealClone([withData][,withEvents][,deepWithData][,deepWithEvents])

with data:表示 是否应将数据与 元素

withEvents:表示 事件处理程序是否应与 元素

deepWithData:一个布尔值,指示是否为所有 应复制克隆元素的子元素

deepWithEvents:一个布尔值,指示是否为所有 应复制克隆元素的子元素

有没有办法做到这一点


注意:我正在使用1.8.1,但是欢迎使用所有版本的答案

您可以使用理想的克隆方法轻松扩展jQuery对象,并使用和的各种组合来只保留您想要的东西。就我个人而言,我认为这很容易做到:

// clones with data and events, then unbinds all events (bound with .on)
$(element).clone(true).off();

你不能只使用
clone()
unbind()
?这不会只删除那些与
on()
绑定的吗?@Ben是的,我相信是的,谢谢你的解释。我还没有尝试过,但文档建议是这样的。在较新的jQuery版本中(我认为>=1.7),所有事件都附带了
.on()
。例如,使用
.click(handler)
是使用
.on('click',handler)
的快捷方式,因此,除非使用不推荐的
.bind()
附加了某些方法,否则使用
.off()
应该可以!我试过了,但是
$(element).clone(true,true)
使用
$(element)效果很好。clone(true,true).off()
给了我一个错误:
uncaughttypeerror:Object#没有方法“off”
@Shawn小心你的jQuery版本:在jQuery 1.7之前没有添加,所以在早期版本中会出现这个错误。您可能使用不同的版本进行了测试,这导致了复制它的困难。