它看起來像在Draggable構造函數中的「網格」選項相對綁定到元素的原始座標被拖動 - 所以簡單地說,如果你有三個可拖動的div分別設置其頂爲100,200,254的像素相對於它們的親本:jQuery的可拖動網格
draggables = $('.draggable');
$.each(draggables, function(index, elem) {
$(elem).draggable({
containment: $('#parent-div'),
opacity: 0.7,
revert: 'invalid',
revertDuration: 300,
grid: [1, 100],
refreshPositions: true
});
});
問題這裏是:
<div class="parent-div" style="position: relative;">
<div id="div1" class="draggable" style="top: 100px; position: absolute;"></div>
<div id="div2" class="draggable" style="top: 200px; position: absolute;"></div>
<div id="div3" class="draggable" style="top: 254px; position: absolute;"></div>
</div>
ADN所有的人都得到與設定爲[1,100] '網格' 拖動啓用作爲s當你拖動div3,比方說,它的頂部增加100,將它移動到354px而不是僅僅增加僅僅是46px(254 + 46 = 300),這將使它進入下一個停止在網格中 - 300px,如果我們正在查看parent-div作爲參考點和「電網持有人」。
我看了一下可拖動的源代碼,它似乎是一個內置的缺陷 - 它們只是執行所有相對於可拖動元素原始位置的計算。
我想避免monkey-patching可拖動庫的代碼,我真正在尋找的是如何讓Draggable計算相對於包含父級的網格位置。但是,如果猴子補丁是不可避免的,我想我必須忍受它。
-1因爲與鏈接解決方案已經死亡 – ThiefMaster 2011-06-15 13:45:43
這篇文章已經過了一年多了,但是還算公平。 – 2011-06-19 10:59:45
對不起,沒有看日期。如果您更新了帖子,例如打破了這個聯繫。 – ThiefMaster 2011-06-19 11:11:34