它看起来像在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