使用 Containment 选项进行拖放
说明
它指定一个元素或元素数组,该元素或元素数组必须是可拖动项目的父元素,以便被放置目标接受。默认情况下,不应用任何包含约束。
语法
Droppables.add('element', {containment: 元素 ID 或父元素 ID 数组});
示例
在此示例中,您将只能放置父元素 ID 为"niceOne"的图像。
<html>
<head>
<title>Drag and Drop Example</title>
<script type = "text/javascript" src = "/javascript/prototype.js"></script>
<script type = "text/javascript" src = "/javascript/scriptaculous.js"></script>
<script type = "text/javascript">
window.onload = function() {
// 使可拖动部分中的所有图像都变为可拖动图像。
$A($('draggables').getElementsByTagName('img')).each(function(item) {
new Draggable(item, {revert: true, ghosting: true});
});
// 使niceOne分区中的所有图像可拖动。
$A($('niceOne').getElementsByTagName('img')).each(
function(item) {
new Draggable(item, {revert: true, ghosting: true});
}
);
Droppables.add('droparea',
{
hoverclass: 'hoverActive',
containment: 'niceOne',
onDrop: moveItem
}
);
// 默认设置放置区域为不清除。
$('droparea').cleared = false;
}
// 目标放置区域包含一段说明性文字
// ,当第一个项目
// 被放入其中时,我们想要删除这段文字。
function moveItem( draggable,droparea){
if (!droparea.cleared) {
droparea.innerHTML = '';
droparea.cleared = true;
}
draggable.parentNode.removeChild(draggable);
droparea.appendChild(draggable);
}
</script>
<style type = "text/css">
#draggables {
width: 172px;
border: 3px ridge blue;
float: left;
padding: 9px;
}
#niceOne {
width: 172px;
border: 3px ridge blue;
float: left;
padding: 9px;
}
#droparea {
float: left;
margin-left: 16px;
width: 172px;
border: 3px ridge maroon;
text-align: center;
font-size: 24px;
padding: 9px;
float: left;
}
.hoverActive {
background-color: #ffffcc;
}
.niceOne {
border:10px dotted red;
}
#draggables img, #droparea img {
margin: 4px;
border:1px solid red;
}
#niceOne img, #droparea img {
margin: 4px;
border:1px solid red;
}
</style>
</head>
<body>
<div id = "niceOne">
<img src = "/images/html.gif"/>
<img src = "/images/xhtml.gif"/>
<img src = "/images/javascript.gif"/>
</div>
<div id = "draggables">
<img src = "/images/css.gif"/>
<img src = "/images/wml_logo.gif"/>
</div>
<div id = "droparea">
Drag and Drop Your Images in this area
</div>
</body>
</html>
这将产生以下结果 −

scriptaculous_drag_drop.html