我尝试使用JQuery创建拖放插件。
$('.draggable').on{
mousemove : function(){
var mouseposition = { // this also needs to account for onclick offset of pointer vis-a-vis element
x : pageX,
y : pageY
};
$(this).css({
top : mouseposition.y,
left : mouseposition.y
});
if( // this statement is kinda bogus, idea is to perform a collision detection via coordinate comparison
$('.draggable').offset().top < $(.droppable').offset().top
&&
$('.draggable').offset().left < $(.droppable').offset().left
) {
alert('the item has been dropped');
}
}
});
以下是我尝试过的demo链接。
答案 0 :(得分:3)
我重写了你的代码,并更新了小提琴。 http://jsfiddle.net/XTMK8/2/
var dragging = undefined;
$('.draggable').on('mousedown', function(){
dragging = $(this);
});
$('body').on('mousemove', function(e){
if(typeof dragging != "undefined") {
dragging.css({
top : e.pageY - 50,
left : e.pageX - 50
});
}
});
$('body').on('mouseup', function(){
dragging = undefined;
});
碰撞检测
我建议使用以下代码段来处理碰撞:
答案 1 :(得分:0)
我认为这必须是一项学术任务,或者你想为了学习目的而这样做(否则,为什么有人不想使用JQuery UI的可拖动?)但无论如何,下面的链接应该指引正确的方向:http://css-tricks.com/snippets/jquery/draggable-without-jquery-ui/
如果您仍然想知道代码有什么问题,我建议重新开始并逐步添加以尝试实现基本功能,然后立即提出可拖动和可拖放功能,例如,您的mousemove功能似乎与在JQuery的doc中,我相信,为了检索pageX和pageY,你需要函数参数中的事件对象:
$("#target").mousemove(function(event) {
var msg = "Handler for .mousemove() called at ";
msg += event.pageX + ", " + event.pageY;
$("#log").append("<div>" + msg + "</div>");
});
尝试使用Firebug设置一些断点,并查看是否正在相应地填充所有变量。
我希望有所帮助,欢呼!