以下可以实现层移动,但如果想使鼠标只按住部分区域就能拖动,如何做呢?
比如:<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 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");
})
$(".title").mousedown(function (e) { //e鼠标事件 $("#dialog").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");
$("#dialog").unbind("mousemove");
})
这样后,鼠标就只能在title区域了
$("#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");
})试试
$("#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");
})
这句里面改成可点区域,其余不用改就可以实现。谢谢ParanoidKing!