如何通过jQuery实现DIV拖动效果?

如何通过jQuery实现DIV拖动效果?

本文实例讲述了jQuery实现简单的DIV拖动效果。分享给大家供大家参考,具体如下:

创建一个HTML文件,复制以下代码进去,修改jquery文件(没有的到网上去下一个,我使用的是jquery-1.8.2),即可以运行了

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Jquery:鼠标拖动DIV</title>
<style type="text/css">
 div#computerMove{
  position:absolute;
  top:50px;
  left:50px;
  width:200px;
  height:30px;
  line-height:30px;
  background-color:#00CCCC;
  text-align:center;
  color:#FFFFFF;
  cursor:default;
 }
</style>
</head>
<body>
 <div id="computerMove">点击我拖动</div>
 <script src="jquery-1.8.2.js" type="text/javascript"></script>
 <script type="text/javascript">
  $(document).ready(function(){
   var $div = $("div#computerMove");
   /* 绑定鼠标左键按住事件 */
   $div.bind("mousedown",function(event){
    /* 获取需要拖动节点的坐标 */
    var offset_x = $(this)[0].offsetLeft;//x坐标
    var offset_y = $(this)[0].offsetTop;//y坐标
    /* 获取当前鼠标的坐标 */
    var mouse_x = event.pageX;
    var mouse_y = event.pageY;
    /* 绑定拖动事件 */
    /* 由于拖动时,可能鼠标会移出元素,所以应该使用全局(document)元素 */
    $(document).bind("mousemove",function(ev){
     /* 计算鼠标移动了的位置 */
     var _x = ev.pageX - mouse_x;
     var _y = ev.pageY - mouse_y;
     /* 设置移动后的元素坐标 */
     var now_x = (offset_x + _x ) + "px";
     var now_y = (offset_y + _y ) + "px";
     /* 改变目标元素的位置 */
     $div.css({
      top:now_y,
      left:now_x
     });
    });
   });
   /* 当鼠标左键松开,接触事件绑定 */
   $(document).bind("mouseup",function(){
    $(this).unbind("mousemove");
   });
  })
 </script>
</body>
</html>

希望本文所述对大家jQuery程序设计有所帮助。