日期:2014-05-18  浏览次数:20763 次

用jquery实现层移动,怎么使鼠标只按住部分区域就能拖动?
以下可以实现层移动,但如果想使鼠标只按住部分区域就能拖动,如何做呢?
比如:<div id="dialog">
  <div id="title"></div>
  ......

  </div>
只按住title区域就能够实现整个层的移动,如何实现?



  //div移动
  $("#dialog").mousedown(function (e) { //e鼠标事件

  $(this).css("cursor", "move"); //改变鼠标指针的形状

  var offset = $(this).offset(); //DIV在页面的位置
  var x = e.pageX - offset.left; //获得鼠标指针离DIV元素左边界的距离
  var y = e.pageY - offset.top; //获得鼠标指针离DIV元素上边界的距离
  $(document).bind("mousemove", function (ev)//绑定鼠标的移动事件,因为光标在DIV元素外面也要有效果,所以要用doucment的事件,而不用DIV元素的事件
  {
  $("#dialog").stop(); //加上这个之后

  var _x = ev.pageX - x; //获得X轴方向移动的值
  var _y = ev.pageY - y; //获得Y轴方向移动的值

  $("#dialog").animate({ left: _x + "px", top: _y + "px" }, 10);
  });

  });

  $(document).mouseup(function () {
  $("#dialog").css("cursor", "default");
  $(this).unbind("mousemove");
  })

------解决方案--------------------
//div移动
$("#title").mousedown(function (e) { //e鼠标事件

$("#dialog").css("cursor", "move"); //改变鼠标指针的形状

var offset = $("#dialog").offset(); //DIV在页面的位置
var x = e.pageX - offset.left; //获得鼠标指针离DIV元素左边界的距离
var y = e.pageY - offset.top; //获得鼠标指针离DIV元素上边界的距离
$(document).bind("mousemove", function (ev)//绑定鼠标的移动事件,因为光标在DIV元素外面也要有效果,所以要用doucment的事件,而不用DIV元素的事件
{
$("#dialog").stop(); //加上这个之后

var _x = ev.pageX - x; //获得X轴方向移动的值
var _y = ev.pageY - y; //获得Y轴方向移动的值

$("#dialog").animate({ left: _x + "px", top: _y + "px" }, 10);
});

});

$(document).mouseup(function () {
$("#dialog").css("cursor", "default");
$(this).unbind("mousemove");
})