javascript - draggable without jQuery ui -


how make element draggable without using jquery ui?

i have code:

<script type="text/javascript">     function show_coords(event)     {         var x=event.clientx;         var y=event.clienty;         var drag=document.getelementbyid('drag');         drag.style.left=x;         drag.style.top=y     } </script>  <body style="height:100%;width:100%" onmousemove="show_coords(event)">      <p id="drag" style="position:absolute">drag me</p> </body> 

the problem want drag while user pressing mouse button. tried onmousedown results negative.

it quite easy concept.

function enabledragging(ele) {     var dragging = dragging || false,        //setup bunch of variables         x, y, ox, oy,         enabledragging.z = enabledragging.z || 1,         current;     ele.onmousedown = function(ev) {         //when mouse down         current = ev.target;         dragging = true;                     //it dragging time         x = ev.clientx;                      //get mouse x , y , store         y = ev.clienty;                      // later use.         ox = current.offsetleft;             //get element's position         oy = current.offsettop;         current.style.zindex = ++enabledragging.z;  //z-index thing          window.onmousemove = function(ev) {             if (dragging == true) {                //when dragging                 var sx = ev.clientx - x + ox,      //add difference between                     sy = ev.clienty - y + oy;      // 2 mouse position                 current.style.top = sy + "px";     // element.                 current.style.left = sx + "px";                 return false;                      //don't care this.             }         };         window.onmouseup = function(ev) {             dragging && (dragging = false);        //mouse up, dragging done!         }     }; }  enabledragging(document.getelementbyid("drag"));  //draggable now!  var ele = document.getelementsbytagname("div"); for(var = 0; < ele.length; i++){              //every div's draggable     enabledragging(ele[i]);                       // (only when "position" }                                                 //  set "absolute" or                                                   //  "relative") 

http://jsfiddle.net/derekl/nwu9g/

the reason why code not working because <div> follow cursor goes, , not dragging it. top left corner follow cursor, , not wanted.


update

now if want grabber or similar, change part of script:

ele.onmousedown = function(ev) {     current = ev.target; 

to

var grabber = document.createelement("div"); grabber.setattribute("class", "grabber"); ele.appendchild(grabber); grabber.onmousedown = function(ev) {     current = ev.target.parentnode; 

now can click on grabber start dragging process.

http://jsfiddle.net/derekl/nwu9g/7/


Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -