как отправить событие клону без использования jquery на iphone - PullRequest
1 голос
/ 04 октября 2010

это код:

$("#draggable").draggable({
    helper: 'clone'
   });

используйте этот код, если вы перетащите div, вы перетащите клона,

это мой код без использования jquery и jquery-ui, я хочу перетащить clone-one при перетаскивании div:

var $=function(str){
   var div=document.createElement('div')
   div.innerHTML=str;
   return div.firstChild;
  }
function id(id){
   return document.getElementById(id)
  }

и

id('draggable').addEventListener("touchstart", function(e) {
     var clone_div=$('<div id="draggable_" style="z-index:11;color:red">'+
          '<p>Drag me to my target</p>'+
         '</div>')
     clone_div.addEventListener("touchstart",function(e2){
      e2=e;
     })
   });

и

id('draggable').addEventListener("touchmove", function(e) {

                //if(e.changedTouches[0].target == id('draggable')){
                    e.preventDefault();
                    id('draggable').dragging=true;
                    //var orig = e.originalEvent;
                    var x = e.changedTouches[0].pageX;
                    var y = e.changedTouches[0].pageY;

                    id('draggable').style.left=x-70+'px';
                    id('draggable').style.top=y-70+'px';

            });

что я могу сделать?

спасибо

1 Ответ

0 голосов
/ 04 октября 2010

теперь все в порядке:

id('draggable').addEventListener("touchstart", function (e) {
            e.preventDefault();

            var clone_div = jmQuery('<div id="draggable_" style="z-index:111">' +
                                '<p>Drag me to my target</p>' +
                            '</div>');
            e.stopPropagation();
            function touchmove(e) {
                var x = e.pageX;
                var y = e.pageY;
                clone_div.style.left = x - 70 + 'px';
                clone_div.style.top = y - 70 + 'px';
                id('demo').insertBefore(clone_div, id('demo').firstChild);
                if (check_drop(e)) {
                    id('droppable').style.background = 'red';
                } else {
                    id('droppable').style.background = '#F6A828';
                }
            }

            function check_drop(e) {
                var drop_bounds = id('droppable').getBoundingClientRect();
                var now_bounds = {
                    left: e.pageX-document.body.scrollLeft - 50,
                    top: e.pageY -document.body.scrollTop- 50,
                    right: e.pageX -document.body.scrollLeft+ 50,
                    bottom: e.pageY -document.body.scrollTop + 50
                }

                //判断是否在droppable内
                if (!(now_bounds.right < drop_bounds.left ||
                            now_bounds.left > drop_bounds.right ||
                            now_bounds.bottom < drop_bounds.top ||
                            now_bounds.top > drop_bounds.bottom)
                        ) {
                    return true;
                }
                return false;
            }
            function touchend(e) {
                id('droppable').style.background = '#F6A828';
                if (check_drop(e)) {
                    id('droppable').appendChild(jmQuery(id('draggable_').innerHTML));
                }else{

                }
                id('draggable_').parentNode.removeChild(id('draggable_'));
                document.removeEventListener('touchmove', touchmove);
                document.removeEventListener('touchend', touchend);
            }

            document.addEventListener("touchmove", touchmove);
            document.addEventListener("touchend", touchend);

        });
...