scriptaculous:dragdrop.js ドロップする

 ドロップ可能なオブジェクトを作成するにはDroppables.add()を使います。Droppables.add()の書式は以下のようになります。

Droppables.add(ID名, オプション)

 多く利用されるパターンの書式としては以下のようになります。

Droppables.add(ドロップするオブジェクトのID名, { accept:ドロップ可能なCSSクラス名, onDrop:ドロップされた時の処理)

 注意点としてはドロップ可能なオブジェクトかどうかをスタイルシートのクラス名で判別している点です。つまり、あらかじめドロップ可能なクラス名を定義/設定しておく必要があります。以下のサンプルではyellowBoxという名前のクラスのみドロップ可能にしています。また、ドロップされた時にはonDropイベントが発生し、イベントハンドラには、ドロップされたオブジェクトがパラメータとして渡されます。以下のサンプルは青いボックスを黄色いボックスにドラッグドロップできるものです。ドロップした青いボックスは黄色いボックス内に追加され、外に出すことはできなくなります。(サンプルを実行する

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>ドロップする</title>
<link rel="stylesheet" href="main.css" type="text/css" media="all">
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="scriptaculous.js"></script>
<script type="text/javascript"><!--
window.onload = function()
{
new Draggable("dragBox1",{revert:true});
new Draggable("dragBox2",{revert:true});
Droppables.add("dropBox", {
accept: "yellowBox",
onDrop: function(element) {
$("dropBox").appendChild(element);
}
});
}
// --></script>
</head>
<body>
<h1>scriptaculous.js ドロップする</h1>
<div id="dragBox1" class="yellowBox">1:ドラッグドロップできます。</div>
<div id="dragBox2" class="yellowBox">2:ドラッグドロップできます。</div>
<div id="dropBox">Drop Box</div>
</body>
</html>


■main.css
#dragBox1, #dragBox2 {
width:80px;
height:80px;
border:1px solid gray;
font-size:0.8em;
}
#dropBox {
width:200px;
height:200px;
border:1px solid gray;
background-color:#ffd;
font-size:0.8em;
}
.yellowBox {
background-color:#ccf;
}

[目次へ]

(2006.7.4)