【发布时间】:2011-02-20 16:07:29
【问题描述】:
所以,它的作用是:你可以成功地将某个东西拖动到任何地方,但是当你再次单击它时,它会重置到原来的位置(我不知道为什么),当你再次尝试拖动它时,只要您的光标触摸它消失的对象(我不知道为什么)。我希望有人能告诉我为什么会这样以及如何解决它!
// JavaScript Document
var posX;
var posY;
var element;
function drag() {
element = document.getElementById("square");
posX = event.clientX;
posY = event.clientY;
element.addEventListener("mousemove", move, false);
}
function move() {
element.addEventListener("mouseup", drop, false);
element.style.left = event.clientX - posX + "px";
element.style.top = event.clientY - posY + "px";
}
function drop() {
element.removeEventListener("mousemove", move, false);
element.removeEventListener("mouseup", drop, false);
}
html 很简单(位置设置为相对):
<p id="square" onmousedown="drag(event)">meep</p>
最后,也是最重要的,感谢大家的宝贵时间 =]
【问题讨论】:
-
虽然滚动你自己的完全有效,但 jQuery UI 已经经过实战测试的 Draggable 和 Droppable 插件使这种事情变得更容易。
-
(在另一条评论中说)这是我第一次尝试(曾经)用 javascript 制作东西。在学习如何使用库之前,我想学习如何使用基本语言。 (我在做东西时学习。)
-
您不仅要学习 JavaScript,还要解决跨浏览器的不兼容性问题。检查这里散布的变通办法的数量:github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.mouse.js 所以如果你真的不想使用 Draggable 和 Droppable,我建议你至少使用 jquery.ui.mouse 作为跨浏览器工作的坚实基础。