Javascript 拖放操作无法正常工作
我是javascript新手。下面是我的拖放html。恢复工作不正常。请帮助我为什么它不能正常工作 下降前恢复工作正常,但不能恢复到原始位置Javascript 拖放操作无法正常工作,javascript,jquery,Javascript,Jquery,我是javascript新手。下面是我的拖放html。恢复工作不正常。请帮助我为什么它不能正常工作 下降前恢复工作正常,但不能恢复到原始位置 <!DOCTYPE html> <html ng-app="first22"> <head> <link rel="icon" type="image/png" href="globe/images/correct.png"/>
<!DOCTYPE html>
<html ng-app="first22">
<head>
<link rel="icon" type="image/png" href="globe/images/correct.png"/>
<link rel="stylesheet" type="text/css" href="globe/css/style.css"/>
<script type="text/javascript" src="globe/script/jquery.js"></script>
<script type="text/javascript" src="globe/script/jquery-ui.js"></script>
<title>
Html5 All in One
</title>
<style>
*{padding:0;margin:0}
#interactive
{
position:absolute;
width:895px;
height:695px;
margin:auto;
left:0;
right:0;
background:#f3f3f3;
}
.dragbg,.drop
{
position:absolute;
width:171px;
height:52px;
background:#c0c0c0;
font-size:20px;
border-radius:25px;
text-align:center;
}
.drag
{
width:160px;
height:40px;
background:#c2c2c2;
border:1px solid;
font-size:20px;
border-radius:25px;
text-align:center;
position:absolute;
margin-top:5px;
margin-left:5px;
line-height:40px;
cursor:pointer;
}
.drag:hover
{
background:#fff;
}
.drop1
{
width:160px;
height:40px;
background:#c2c2c2;
border:1px solid;
font-size:20px;
border-radius:25px;
text-align:center;
position:absolute;
top:5px;
left:5px;
line-height:40px;
cursor:pointer;
}
</style>
</head>
<body>
<div id="interactive">
<div style="position:absolute;left:0px;top:50px;width:100%;text-align:center;font-size:28px;font-weight:bold">Common Drag and Drop</div>
<div class="dragbg" style="left:120px;top:150px;">
<div class="drag" >Meter</div>
</div>
<div class="dragbg" style="left:120px;top:220px;">
<div class="drag">MilliMeter</div>
</div>
<div class="dragbg" style="left:120px;top:290px;">
<div class="drag">CentiMeter</div>
</div>
<div class="dragbg" style="left:120px;top:360px;">
<div class="drag">Gram</div>
</div>
<div class="dragbg" style="left:120px;top:430px;">
<div class="drag">MilliGram</div>
</div>
<div class="dragbg" style="left:120px;top:500px;">
<div class="drag">KiloGram</div>
</div>
<div class="drop" style="left:320px;top:150px;">
</div>
<div class="drop" style="left:320px;top:220px;">
</div>
<div class="drop" style="left:320px;top:290px;">
</div>
<div class="drop" style="left:320px;top:360px;">
</div>
<div class="drop" style="left:320px;top:430px;">
</div>
<div class="drop" style="left:320px;top:500px;">
</div>
</div>
</body>
<script>
$("document").ready(function()
{
$(".drag").draggable(
{
containment:"#interactive",
revert:function(event,ui)
{
$(this).data("uiDraggable").originalPosition=
{
left:0,
top:0
};
return !event;
},
zindex:1000,
drag:function(event,ui)
{
$(this).css("z-index",2000);
}
});
$(".drop").droppable(
{
drop:function(event,ui)
{
$(this).append(ui.draggable)
$(this).find(".drag").each(function()
{
$(this).css("position","absolute");
$(this).css({"top":"0px","left":"0px"});
});
}
});
})
</script>
</html>
Html5多功能一体机
*{填充:0;边距:0}
#互动的
{
位置:绝对位置;
宽度:895px;
身高:695px;
保证金:自动;
左:0;
右:0;
背景:#f3;
}
.dragbg、.drop
{
位置:绝对位置;
宽度:171像素;
高度:52px;
背景:#C0C0;
字体大小:20px;
边界半径:25px;
文本对齐:居中;
}
拖曳
{
宽度:160px;
高度:40px;
背景:#c2c2;
边框:1px实心;
字体大小:20px;
边界半径:25px;
文本对齐:居中;
位置:绝对位置;
边缘顶部:5px;
左边距:5px;
线高:40px;
光标:指针;
}
.拖动:悬停
{
背景:#fff;
}
.drop1
{
宽度:160px;
高度:40px;
背景:#c2c2;
边框:1px实心;
字体大小:20px;
边界半径:25px;
文本对齐:居中;
位置:绝对位置;
顶部:5px;
左:5px;
线高:40px;
光标:指针;
}
普通拖放
米
毫米
厘米
克
毫克
公斤
$(“文档”).ready(函数()
{
$(“.drag”).draggable(
{
遏制:“互动”,
还原:功能(事件、用户界面)
{
$(此).data(“uiDraggable”).originalPosition=
{
左:0,,
排名:0
};
返回!事件;
},
zindex:1000,
拖动:函数(事件、ui)
{
$(本).css(“z指数”,2000年);
}
});
$(“.drop”).dropable(
{
drop:函数(事件、用户界面)
{
$(this.append(ui.draggable)
$(this.find(“.drag”).each(function()
{
$(this.css(“位置”、“绝对”);
$(this.css({“top”:“0px”,“left”:“0px”});
});
}
});
})
我认为这种行为是因为您在可下拉列表中添加了可拖动列表,从而更改了位置坐标。您不需要在droppable初始化中执行任何操作,它将起作用
演示:
JS:
将拖动附加到其占位符,从而更改拖动对象的父对象。所以它改变了它与新容器的关系。您只需移动拖动的位置,使其保持在其父容器中。此外,还必须相对于其容器定位div
$(".drop").droppable(
{
drop:function(event,ui)
{
var pos = $(this).offset();
var ppos = $(ui.draggable).parent().offset();
var left = pos.left - ppos.left;
var top = pos.top - ppos.top;
$(ui.draggable).css({"left" : left, "top": top})
$(this).find(".drag").each(function()
{
$(this).css("position","absolute");
$(this).css({"top":"0px","left":"0px"});
});
}
});
你的小提琴更新了制作小提琴怎么样?js fiddle@bharath你想达到什么目的?请更清楚。问题是,如果将可拖动元件放置在可拖动元件之外,它会恢复到其原始位置。一旦我拖放到可拖放元素并再次拖放到可拖放元素的外部,它就不会返回到其原始位置,而是会返回到上次拖放的位置。为什么会发生这种情况?在拖放位置上,UIDRAGABLE可以拖动到可拖放元素的中心,您至少可以自己尝试该代码。因此,并不是为了完成你的代码,你可以得到指导和帮助,但不能得到完整的代码。无论如何,你可以检查更新后的答案,以确定拖拽的中心
$(".drop").droppable(
{
drop:function(event,ui)
{
var pos = $(this).offset();
var ppos = $(ui.draggable).parent().offset();
var left = pos.left - ppos.left;
var top = pos.top - ppos.top;
$(ui.draggable).css({"left" : left, "top": top})
$(this).find(".drag").each(function()
{
$(this).css("position","absolute");
$(this).css({"top":"0px","left":"0px"});
});
}
});