获取jQuery可拖动到捕捉到特定的网格

前端之家收集整理的这篇文章主要介绍了获取jQuery可拖动到捕捉到特定的网格前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
(注:有些人问过类似的问题,但是太具体了,没有提供任何可用的答案)

jQuery UI的可拖动小部件具有用于捕捉到网格的选项,但无法设置网格是相对的.

例如,我们在下降目标中有一个明确定义的20×20网格.从下拉目标中的0,0开始的拖动项将与网格对应.但是,从不同位置或放置目标之外开始的拖动项目将不会与该网格对齐.

http://jsfiddle.net/FNhFX/5/

HTML:

<div class="drop-target">
    <div class="drag-item">Drag me</div>
    <div class="drag-item" style="left:87px;top:87px;">Drag me</div>
</div>
<div class="outside-drag-item">Drag me</div>

JS:

$(function() {
    $(".drag-item").draggable({
        grid: [20,20]
    });
    $(".outside-drag-item").draggable({
        grid: [20,20],helper:"clone"
    });
    $(".drop-target").droppable({
        accept: ".drag-item"
    });
});

有没有办法使用jQuery draggable捕捉到特定的网格?

解决方法

我也要去,并在这里发布答案,虽然我是通过 a followup question you asked来到这里.

您可以在jQuery UI draggable的drag事件中轻松创建自己的对齐网格功能.

基本上,您希望检查当前ui位置在拖动拖动到网格的任何位置的距离.该接近度始终可以表示为由网格划分的位置的剩余部分.如果该余数小于或等于snapTolerance,那么只需将该位置设置为没有该余数即可.

散文说得很奇怪.在代码中应该更清楚:

Live Demo

// Custom grid
$('#Box-3').draggable({
    drag: function( event,ui ) {
        var snapTolerance = $(this).draggable('option','snapTolerance');
        var topRemainder = ui.position.top % 20;
        var leftRemainder = ui.position.left % 20;

        if (topRemainder <= snapTolerance) {
            ui.position.top = ui.position.top - topRemainder;
        }

        if (leftRemainder <= snapTolerance) {
            ui.position.left = ui.position.left - leftRemainder;
        }
    }  
});

猜你在找的jQuery相关文章