jquery 拖动层问题! 50
这段代码可以拖动,但是因为拖动式div的速度跟不上鼠标移动的速度,导致脱了一小段距离鼠标就离开div了,请哪位高人指点一下,下面这段代码最大的问题在哪,怎样可以用jque...
这段代码可以拖动,但是因为拖动式div的速度跟不上鼠标移动的速度,导致脱了一小段距离鼠标就离开div了,请哪位高人指点一下,下面这段代码最大的问题在哪,怎样可以用jquery简单流畅的拖动div(不要插件)
var _x=0,_y=0,_xx=0,_yy=0;
$("#drag").mousedown(function(event){
$(this).css("cursor", "move");
var offset = $(this).parents("#moreDiv").offset();
_x=event.clientX-offset.left;
_y=event.clientY-offset.top;
$(this).mousemove(function(event){
_xx=event.clientX-_x;
_yy=event.clientY-_y;
this.parentNode.parentNode.style.left=event.clientX-_x+"px";
this.parentNode.parentNode.style.top=event.clientY-_y+"px";
return false;
});
return false;
});
$("#drag").mouseup(function(){
$(this).unbind("mousemove");
return false;
})
.mouseout(function(){
$(this).unbind("mousemove");
return false;
});
你的方法和我的方法效果是一样的 ,就是不流畅,我发现是因为我这个脚本是通过iframe向父页面生成了一个div,然后在通过引用父页面的元素来控制的,(我试了直接在本页面输入div的话就是可以的)。
所以我现在的问题就是子页面想父页面的div进行拖拽控制,就不流畅,不知道是什么原因? 展开
var _x=0,_y=0,_xx=0,_yy=0;
$("#drag").mousedown(function(event){
$(this).css("cursor", "move");
var offset = $(this).parents("#moreDiv").offset();
_x=event.clientX-offset.left;
_y=event.clientY-offset.top;
$(this).mousemove(function(event){
_xx=event.clientX-_x;
_yy=event.clientY-_y;
this.parentNode.parentNode.style.left=event.clientX-_x+"px";
this.parentNode.parentNode.style.top=event.clientY-_y+"px";
return false;
});
return false;
});
$("#drag").mouseup(function(){
$(this).unbind("mousemove");
return false;
})
.mouseout(function(){
$(this).unbind("mousemove");
return false;
});
你的方法和我的方法效果是一样的 ,就是不流畅,我发现是因为我这个脚本是通过iframe向父页面生成了一个div,然后在通过引用父页面的元素来控制的,(我试了直接在本页面输入div的话就是可以的)。
所以我现在的问题就是子页面想父页面的div进行拖拽控制,就不流畅,不知道是什么原因? 展开
1个回答
展开全部
function My_Point(x, y) {
this.x = x;
this.y = y;
}
$("#drag").mousedown(function(event){
$(this).css("cursor", "move");
var start_mouse = new My_Point(0, 0); // 鼠标起始位置
var start_obj = new My_Point(0, 0); // 被拖拽手柄的起始位置
start_mouse.x = event.clientX;
start_mouse.y = event.clientY;
start_obj.x = parseInt(obj.style.left);
start_obj.y = parseInt(obj.style.top);
$(this).mousemove(function(event){
this.parentNode.parentNode.style.left = start_obj.x + event.clientX - start_mouse.x + "px";
this.parentNode.parentNode.style.top = start_obj.y + event.clientY - start_mouse.y + "px";
return false;
});
$("#drag").mouseup(function(){
$(this).unbind("mousemove");
return false;
})
.mouseout(function(){
$(this).unbind("mousemove");
return false;
});
this.x = x;
this.y = y;
}
$("#drag").mousedown(function(event){
$(this).css("cursor", "move");
var start_mouse = new My_Point(0, 0); // 鼠标起始位置
var start_obj = new My_Point(0, 0); // 被拖拽手柄的起始位置
start_mouse.x = event.clientX;
start_mouse.y = event.clientY;
start_obj.x = parseInt(obj.style.left);
start_obj.y = parseInt(obj.style.top);
$(this).mousemove(function(event){
this.parentNode.parentNode.style.left = start_obj.x + event.clientX - start_mouse.x + "px";
this.parentNode.parentNode.style.top = start_obj.y + event.clientY - start_mouse.y + "px";
return false;
});
$("#drag").mouseup(function(){
$(this).unbind("mousemove");
return false;
})
.mouseout(function(){
$(this).unbind("mousemove");
return false;
});
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询