2011-02-14 22:24:00
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>drag & drop</title> </head> <body> <div id="box">BOX</div> <div id="debug"></div> </body> </html>
<style type="text/css">
body {
margin: 0;
padding: 0;
}
#box {
position: absolute;
cursor: default;
width: 100px;
height: 100px;
border: 1px solid red;
}
</style>
<script type="text/javascript">
window.onload = function() {
var box = document.getElementById("box");
var debug = document.getElementById("debug");
box.addEventListener('selectstart', function(event) {
event.returnValue = false;
});
box.addEventListener('mousedown', function(event) {
mousedown = true;
});
box.addEventListener('mouseup', function() {
mousedown = false;
});
box.addEventListener('mousemove', function(event) {
if(mousedown) {
//改变 box 对象的样式
}
});
};
</script>
box.addEventListener('mousemove', function(event) {
if(mousedown) {
box.style.left = (event.clientX - 50) + 'px';
box.style.top = (event.clientY - 50) + 'px';
}
});
<script type="text/javascript">
window.onload = function() {
var box = document.getElementById("box");
var debug = document.getElementById("debug");
var mousedown = false;
var offsetX = 0, offsetY = 0;
box.addEventListener('selectstart', function(event) {
event.returnValue = false;
});
box.addEventListener('mousedown', function(event) {
mousedown = true;
offsetX = event.layerX;
offsetY = event.layerY;
});
document.addEventListener('mouseup', function() {
mousedown = false;
});
document.addEventListener('mousemove', function(event) {
if(mousedown) {
//改变 box 对象的样式
box.style.left = (event.clientX - offsetX) + 'px';
box.style.top = (event.clientY - offsetY) + 'px';
}
});
};
</script>
(function($) {
var data = {
currentObj : null,
offsetX : 0,
offsetY : 0,
flag : false
};
$(document).mouseup(function() {
data.current = null;
data.flag = false;
});
$(document).mousemove(function(event) {
if(data.flag && data.currentObj) {
data.currentObj.css({
left : (event.clientX - data.offsetX) + 'px',
top : (event.clientY - data.offsetY) + 'px'
});
}
});
$.fn.extend({
draggable : function() {
return this.each(function() {
var $this = $(this);
$this.bind('selectstart', function() {
return false;
}).mousedown(function(event) {
data.currentObj = $this;
data.offsetX = event.layerX;
data.offsetY = event.layerY;
data.flag = true;
});
});
}
});
})(jQuery);
$(function() {
$('#box, #otherBox').draggable();
});