Как клонировать touchevents с помощью jQuery? - PullRequest
1 голос
/ 17 августа 2011

Мне нужна помощь с clone() в jQuery.

Итак, дело в следующем: я занимаюсь перетаскиванием и сортировкой, которые будут работать на сенсорных устройствах. Все хорошо, за исключением того, что когда я клонирую элемент, события исчезают (перетаскивание перестает работать).

Код выглядит следующим образом (упрощенно):

$('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 Ответ

1 голос
/ 17 августа 2011

Поскольку элемент DOM является одной вещью (и не клонируется автоматически), использование функции, подобной insertBefore, будет перемещать элемент вместо его копирования. Если вы используете этот «трюк», у вас также не будет проблем с тем, что события не будут клонированы, потому что это тот же самый элемент со всем, что связано.

Так что вы могли бы сделать, например:

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