发现draggale定了axis ,移动太快还是会漂,不知道是不是我代码问题.
对js还是不够熟,虽然看得多,写起来就是感觉不一样。编的过程中,错误很多,思路上可能也有问题。
draggale后面用不好,就能用animate方法了。
demo

———————————-
<!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=gb2312″ />
<title>jquery拼图</title>
<script language=”javascript” src=”jquery.ui/jquery-1.2.4a.js”></script>
<script language=”javascript” src=”jquery.ui/ui.base.min.js”></script>
<script language=”javascript” src=”jquery.ui/ui.draggable.min.js”></script>
<script language=”javascript”>
var x //取得白方块div的left值
var y
var sleft = new Array(); //1到8,每个div的移动前的left值
var sstop = new Array(); //1到8,每个div的移动前的top值
$(function(){
start();
function start(){
for(var i=1;i<9;i++){
x=$(“#f9″).position().left;
y=$(“#f9″).position().top;
sleft[i] = $(“div”).eq(i).position().left
var posx = sleft[i]-x; //取得第i个div与白方块#f9的left差值 ,有正负
var absposx = Math.abs(posx); //取得第i个div与白方块#f9的left差值的绝对值
sstop[i] = $(“div”).eq(i).position().top
var posy = sstop[i] -y;
var absposy = Math.abs(posy);
if(absposx==200 && absposy == 0){ //判断该移动的轴,x或y轴,并调用stop函数
$(“div”).eq(i).draggable(“enable”);
$(“div”).eq(i).draggable({axis:”x”,containment:”parent”,opacity:0.6,cursor:”move”,snap: true});
$(“div”).eq(i).bind(‘dragstop’, function(event, ui) { //绑定draggable的stop函数
var index=$(“div”).index(this);
var eleft = $(this).position().left; //取出该div的最终left值,赋值给eleft
$(this).animate({left:x,opacity:”0.6″},function(){
x=sleft[index]; //x的值已经改变
$(this).css(“opacity”,”1″);
$(“#f9″).css(“left”,x);
$(“div”).draggable(“disable”);
$(“div”).unbind(‘dragstop’); //取消监听事件,重要★★★
start();
});
});
}
else if(absposx==0 && absposy==200){ //y坐标移动
$(“div”).eq(i).draggable(“enable”);
$(“div”).eq(i).draggable({axis:”y”,containment:”parent”,opacity:0.6,cursor:”move”,snap: true });
$(“div”).eq(i).bind(‘dragstop’, function(event, ui){
var index=$(“div”).index(this); //i不能作为参数传入该函数,所以定义个index表示序号
var etop = $(this).position().top; //移动后的top值
$(this).animate({top:y,opacity:”0.6″},function(){
y=sstop[index]
$(this).css(“opacity”,”1″);
$(“#f9″).css(“top”,y);
$(“div”).draggable(“disable”);
$(“div”).unbind(‘dragstop’);
start();
});
});
}
}
}
});
</script>
<style>
h1{ … Continue Reading