简单的js实现拖拽出现的问题

<!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=utf-8"/>
<script type="text/javascript" src="jquery.js" language="javascript"></script>
<title>JS模拟拖拽</title>
<style type="text/css">
*
{
margin
:0px;
padding
:0px;
}
#box
{
width
:150px;
height
:100px;
border
:3px solid #06C;
overflow
:auto;
margin
:70px auto;
position
:absolute;
}
#topBar
{
width
:150px;
height
:70px;
background
:#FF9;
}
</style>
<script type="text/javascript">


var this_x=0,this_y=0; //记录鼠标开始时相对于拖放对象的位置
var drag_x=0,drag_y=0; //记录拖拽对象的位置
var mouse_x=0,mouse_y=0; //记录鼠标的位置
var flag=false; //判断是否拖动

$(document).ready(
function() {

//鼠标按下,开始拖拽
$("#box #topBar").mousedown(function(event){
ready_drag(event);
});
//停止拖拽
$(document).mouseup(function(){
//alert("ss");
flag=false;
$(
"#value").html("当前状态:拖放结束");
$(
"#topBar").css("cursor","default");
})
});
function ready_drag(event)
{
$(
"#value").html("当前状态:开始拖放");
$(
"#topBar").css("cursor","move");
flag
=true;
mouse_x
=event.clientX;
mouse_y
=event.clientY;

var drag=$("#box");
//获取拖拽对象相对于页面的位置
drag_x=drag.attr("offsetLeft");
drag_y
=drag.attr("offsetTop");

//得到鼠标相对于拖拽对象的位置
this_x=mouse_x-drag_x;
this_y
=mouse_y-drag_y;

//鼠标移动开始执行拖拽程序
$(document).mousemove(function(event){
if(flag==true)
{ drag_start(this_x,this_y,event); } })
}
function drag_start(this_x,this_y,event)
{
var mouse_x=event.clientX;
var mouse_y=event.clientY;
drag_x
= mouse_x-this_x;
drag_y
= mouse_y-this_y;
$(
"#value").html("鼠标的位置:X:"+mouse_x+"Y:"+mouse_y+"");
$(
"#box").css("left",drag_x);
$(
"#box").css("top",drag_y-50);
}


</script>
</head>

<body>
<div id="box">
<div id="topBar">
</div>
</div>
<div id="value"></div>
</body>
</html>

这是我做的一个简单的拖拽(的确是很简单。。。),但是出现了点问题:

1. 就是第二次拖拽的时候就不成功了(此问题出现在火狐上),这是什么原因呢?

2.为什么拖拽对象的位置变化比鼠标的慢呢??在ie上还会很卡,代码应该怎么优化呢?

谢啦~~~~

侃侃尔雅
浏览 556回答 5
5回答

繁花如伊

第一个还真是没想到啊,谢谢提醒,另外你说的把select事件禁用会好点是怎么回事?

波斯汪

mousemove 性能不高

阿晨1998

那什么高啊?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript