javascript - jQuery UI 可拖动捕捉到容器中

标签 javascript jquery html css jquery-ui

问题描述(Fiddle):

使用 jQuery UI 的 .draggable() 函数,我试图让红色元素捕捉到蓝色容器的内部。它首先捕捉到一个边缘而不是完全在它里面(即到两个边缘)。您必须继续拖动它,直到它捕捉到另一个轴。

当它开始以任何 Angular 捕捉时,我希望它到达最终位置(完全在容器内)。有没有一种方法可以检测快照何时开始(即触发事件),然后使用它来手动重新定位红框?

示例代码:

HTML:

<div id="box"></div>
<div id="container"></div>

JavaScript:

$('#box').draggable({
    snap: '#container',
    snapMode: 'inner',
    snapTolerance: 50
});

CSS:

#box {
    background: red;
    width: 100px;
    height: 100px;
    position: absolute;
    z-index: 1;
}
#container {
    width: 102px;
    height: 102px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -51px;
    margin-left: -51px;
    border: 1px solid blue;
}

最佳答案

fiddle :http://jsfiddle.net/W8yaz/9/

快照事件帮助:Jquery UI – draggable 'snap' event

现在,捕捉后就不能再拖动了。这将是另一个令人头疼的问题。

注:您不能触发 mouseup 来取消拖动事件,这会导致已知的 javascript 错误,可以在之前的 fiddle 中看到:http://jsfiddle.net/W8yaz/7/

JavaScript:

$('#box').draggable({
    snap: '#container',
    snapMode: 'inner',
    snapTolerance: 50,
    drag: function (event, ui) {
        if ($(this).hasClass('snapped')) {
            var position = $('#container').position();

            $(this).css({
                top: position.top,
                left: position.left
            });
            return false;
        } else {
            var draggable = $(this).data("uiDraggable");
            $.each(draggable.snapElements, function (index, element) {
                if (element.snapping) {
                    draggable._trigger("snapped", event, $.extend({}, ui, {
                        snapElement: $(element.item)
                    }));
                }
            });
        }
    },
    snapped: function (event, ui) {
        $(this).addClass('snapped');
    }
});

关于javascript - jQuery UI 可拖动捕捉到容器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22094578/

相关文章:

Jquery 事件仅在文档就绪时工作

html - 消除导航栏导致的水平滚动

html - 使用jsp将mysql结果导出为ex​​cel/pdf/etc格式

javascript - Outlook 2016 桌面应用程序中使用的是哪个版本的 IE?

javascript - Webpack 无法加载json 文件,如何定位本地json 文件并使用http.get 和AngularJS 加载该文件

javascript - 删除按钮而不编辑 Flash 文件

javascript - 如何使用 JQuery 合并两个 UL 以使值交替?

javascript - react : Map multidimensional array with different keys

javascript - 内容脚本中的 Chrome 扩展选项

javascript - 容器、行、列 - 在 React-Bootstrap 中不起作用