Droppable


解説

Draggable要素をドロップできるようにします。
ドロップを受け入れるDraggable要素を指定することができます。

書式

jQuery_Object.droppable([options]);

依存ファイル

  • jquery.ui.core.js
  • jquery.ui.widget.js
  • jquery.ui.mouse.js
  • jquery.ui.droppable.js

引数

  • optionsオプション
    String: "disable"、 "enable"、"destroy" のいずれか。
    説明
    "disable" 一時的にドロップ機能を無効にします。
    "enable" ドロップ機能を有効にします。
    "destroy" ドロップ機能を完全に破棄します。

    Object: 指定したオプションで、要素にドロップ機能を追加します。(キーと値のハッシュ)
    プロパティ初期値説明
    accept Boolean Function(draggable), String なし ドロップを受け入れるDraggable要素を指定します。jQueryセレクタ、もしくは関数を指定します。
    関数を指定した場合、第1引数には、通過中のDraggable要素が渡されます。trueを返すとその要素のドロップを受け入れます。
    activeClass String なし Draggable要素がドラッグを開始したときに適用するクラス名を指定します。
    greedy Boolean false trueを指定すると、ネストされたDroppable要素にイベントを伝播しないようにします。
    hoverClass String なし Draggable要素が上に乗ったときに適用するクラス名を指定します。
    tolerance String "intersect" Draggable要素が上に乗ったと判定する方法を指定します。
    パラメータ意味
    "fit"合わさった
    (Draggable要素が完全に入った場合)
    "intersect"交差した
    (Draggable要素が半分以上入った場合)
    "pointer"ポインタが入った
    "touch"接触した
    activate Function(e, ui) なし ドロップを受け入れるDraggable要素がドラッグを開始したときに呼び出されるイベントハンドラ関数を指定します。
    deactivate Function(e, ui) なし ドロップを受け入れるDraggable要素がドラッグを終了したときに呼び出されるイベントハンドラ関数を指定します。
    over Function(e, ui) なし ドロップを受け入れるDraggable要素が上に乗ったときに呼び出されるイベントハンドラ関数を指定します。
    out Function(e, ui) なし ドロップを受け入れるDraggable要素が上に乗り、外れたときに呼び出されるイベントハンドラ関数を指定します。
    drop Function(e, ui) なし ドロップされたときに呼び出されるイベントハンドラ関数を指定します。

    イベントハンドラ関数

    イベントハンドラ関数(activate, deactivate, over, out, drop)には2つの引数が渡されます。
    第1引数には、イベントオブジェクトが渡されます。
    第2引数には、以下のプロパティを持ったオブジェクトが渡されます。

    プロパティ説明
    optionsDroppable要素に指定したオプションです。
    positionhelperオブジェクトの位置です。
    top, left プロパティを持ちます。
    absolutePositionhelperオブジェクトの絶対位置です。
    top, left プロパティを持ちます。
    draggableDroppable要素です。
    helperhelperオブジェクトです。

戻り値

  • jQuery: jQueryオブジェクト

例1:様々なオプションで、Droppableな要素を生成します。(オプションと動きを確認してください。)

/* --- CSS --- */
div.orange-active {background-color:papayawhip;}
div.orange-hover  {background-color:darkorange;}
div.pink-active {background-color:lavenderblush;}
div.pink-hover  {background-color:deeppink;}
// --- 橙色のDroppable要素 ---
$(".orange").droppable({
    accept: ".blue, .green",       // .blueと.greenをドロップ可能にする
    tolerance: "fit",              // Draggable要素が完全に入った場合にDrop可能にする
    activeClass: "orange-active",  // Draggable要素がドラッグしているときに適用するクラス
    hoverClass: "orange-hover",    // Draggable要素が上に乗ったときに適用するクラス
    drop: function(ev, ui) {
        // ドロップされたときにDraggable要素を複製して追加
        ui.draggable.clone().appendTo(this);
    },
    over: function(ev, ui) {
        // Draggable要素が上に乗ったときに文字を表示
        $(".over", this).show().fadeOut(1000);
    }
})

// --- ピンク色のDroppable要素 ---
$(".pink").droppable({
    accept: ".gray, .blue",        // .gray, .blueをドロップ可能にする
    tolerance: "touch",            // Draggable要素が接触した場合にDrop可能にする
    activeClass: "pink-active",    // Draggable要素がドラッグしているときに適用するクラス
    hoverClass: "pink-hover",      // Draggable要素が上に乗ったときに適用するクラス
    drop: function(ev, ui) {
        // ドロップされたDraggable要素を追加
        ui.draggable.appendTo(this);
    },
    over: function(ev, ui) {
        // Draggable要素が上に乗ったときに文字を表示
        $(".over", this).show().fadeOut(1000);
    }
})

.gray
.blue
.green
.orange Over!
.pink Over!

Droppable要素に付与されるクラス

Droppable要素には、状態に応じて以下のクラスが設定されます。

クラス状態
ui-droppableDroppable要素
ui-droppable-disabledドロップ無効
activeClassDraggable要素がドラッグしているとき。activeClassプロパティに指定したクラス
hoverClassDraggable要素が上に乗ったとき。hoverClassプロパティに指定したクラス

例)Draggable要素が上に乗ったときのDroppable要素

<droppable要素 class="ui-droppable activeClassプロパティに指定したクラス hoverClassプロパティに指定したクラス">

cssの定義の順番に注意

activeClass / hoverClass クラスのCSSの定義は、activeClass,hoverClassの順に行ってください。 これは、jQueryが次のようにクラスを設定していることによります。

Draggable要素がドラッグしているとき

<droppable要素 class="ui-droppable activeClassプロパティに指定したクラス">

Draggable要素が上に乗ったとき

<droppable要素 class="ui-droppable activeClassプロパティに指定したクラス hoverClassプロパティに指定したクラス">

Draggable要素が上に乗ったときも、activeClassで指定したクラスが付与されている事に注目してください。
もし、cssでhoverClass,activeClassの順番で定義されていた場合、重複している項目については、hoverClassの内容をactiveClassの内容で上書きしてしまいます。