azovl
@azovl

Как клонировать элемент по которому осуществился клик?

К примеру:
<span class='abc'>ABC</span>
<span class='abc'>DEF</span>
<span class='abc'>GHI</span>
<span class='abc'>JKL</span>


abc.prototype.drag_products = function () {

            function dragElement(event){
                var elementToDrag = event.target;
                elementToDrag.style.left = event.deltaX + 'px';
                elementToDrag.style.top = event.deltaY + 'px';
            };

            function initTouchListeners(touchableElement){
                var touchControl = new Hammer(touchableElement);
                touchControl.get('pan').set({ direction: Hammer.DIRECTION_ALL });
                touchControl.on('pan', function(event){

                   /** Здесь необходимо клонировать элемент по которому был осуществлен клик,  для того чтобы при клике мышей, "span" остался на том же месте, но появился другой span (клон) который можно было бы передвигать
                    var newElement = $(this).clone();
                    
                    dragElement(newElement);
                    // На данный момент возникает ошибка
                });
            };

            var listItems = $('.abc');
            for(var i = 0; i < listItems.length; i++){
                initTouchListeners(listItems[i]);
            }

        };


Ситуация такова: есть span-ы. При клике мне необходимо чтобы элемент по которому я кликнул, остался но создался его клон, который я смогу перетаскивать.

Как это осуществить?
Буду признателен если ответите на эти вопросы:
Для перетаскивания использую Hamster.JS с ним тоже не все так гладко как хотелось бы...
При перетаскивании выделяется текст, как это предотвратить?
При перетаскивании, область по которой можно передвигать элемент ограничивается одним divom, на другой я попросту не могу залезть, включается скролл. Как это исправить?

Заранее спасибо за ответы, уж очень нужно...
  • Вопрос задан
  • 2522 просмотра
Решения вопроса 1
в jQuery элементы клонируются очень просто c помощью clone()
главно не забыть добавить клона в DOM
$( ".hello" ).clone().appendTo( "body" );

При перетаскивании, область по которой можно передвигать элемент ограничивается одним divom

Добавляйте копию перетаскиваемую в <body> и там абсолютно позиционируйте, будет таскаться везде.

вопрос - почему не используете Draggable
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Geminic
@Geminic
Просто клонировать элемент недостаточно, нужно его ещё куда-то аппендить, чтобы он появился в DOM. jquery.page2page.ru/index.php5/%D0%9A%D0%BB%D0%BE%...

Чтобы избавиться от выделения текста, используйте css-свойство user-select: none (пока что ему нужны префиксы) htmlbook.ru/css/-webkit-user-select
Ответ написан
Комментировать
Думаю, вам может помочь вот эта статья
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы