如何使用jQuery克隆touchevents?

时间:2011-08-17 11:11:09

标签: javascript jquery events cloning

我需要在jQuery中对clone()提供一些帮助。

所以,事情是这样的:我正在进行某种拖拽和放弃,它将适用于触摸设备。一切都很好,除了当我克隆一个元素时,事件消失了(拖动停止工作)。

代码看起来像这样(简化):

$('li', layers).each(function(){
    this.addEventListener('touchend', function(e){
        var cloned = $(this).clone( true, true ); // no events are cloned at all!
        cloned.insertBefore( this.helper ); 

    }); //ontouchend

    this.addEventListener('touchmove', function(e){
        // do some stuff with this.helper
    });
});

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

由于DOM元素是一个(并且不会自动克隆),因此使用类似insertBefore的函数将移动元素而不是复制它。如果你使用这个'技巧',你也不会遇到没有被克隆的事件的麻烦,因为它与所有绑定的元素完全相同。

所以你可以这样做:

this.addEventListener('touchend', function(e){
    this.insertBefore( this.helper ); 
}); //ontouchend