2012-06-15 6 views
5

2つのdivがあり、JQueryUIライブラリを使用して1つのdivを別のdivにドロップしています。要素内のグリッドにスナップするJQuery UI

ドラッグ可能なdivを、ページ全体のグリッドではなく、ドロップdiv内のグリッドにスナップしたいとします。私はドロップ要素にスナップするためのスナップ属性を見つけました。グリッドにスナップする属性も見つけましたが、2つを組み合わせる方法はありますか?

$("#draggable").draggable({ grid: [ 50, 50 ] }); 

私が考えることができる唯一の他の回避策は、私が気に入らないアプローチであるたくさんの小さなスナップdivでドロップdivを設定することです。

答えて

8

drappableのoverおよびoutメソッドを使用して、ドラッグ可能なものが検出されたときを検出し、その時点でのみグリッドパラメータを実装できます。

$("#draggable").draggable(); 
$("#snaptarget").droppable({ 
    over: function(event, ui) { 
     $("#draggable").draggable({ 
      grid: [50, 50] 
     }); 
    }, 
    out: function(event, ui) { 
     $("#draggable").draggable("option", "grid", false); 
    } 
});​ 

jsFiddle example

+0

大変感謝!私はその属性を無効にすると仮定しますか? – Liath

+1

そうです。 Falseはグリッドのデフォルト値なので、50,50の後にfalseに戻すと、本質的にそのオプションがリセットされます。 – j08691