javascript - 使用 jQuery 将一个 div 移动到另一个 div

标签 javascript jquery jquery-ui

这应该非常简单。我读了很多例子,但无法弄清楚我做错了什么。我只使用 JavaScript 在大约 20 分钟内就完成了这个任务,所以我一定错过了一些明显的东西,如果这是一个愚蠢的问题,我深表歉意。我没有输入我的测试场景,而是创建了一个简单的 JSFiddle,它应该允许用户将单词移动到框中。我无法启动 drop 功能。在我的测试环境中,放置功能会触发,但单词总是出现在框外。

http://jsfiddle.net/nuander/3htow95z/5/

知道我做错了什么吗?

注意:StackOverflow 希望我重新输入此处的所有代码,因此这是 JSFiddle 中的内容

<div id="Moveable1">Move me 1</div>
<div id="Target1" class="target"></div>

.target { width:200px; height:100px; border:1px solid #000}

$(document).ready(function () {
    $("#Moveable1").draggable();
    $("#Target1").droppable({ drop: dropItem });
});

function dropItem(ev, ui) {
    alert("dropped");
    $(this).append($(ui.draggable));
}

最佳答案

你太接近了。这是 drop 事件的文档:

Triggered when an accepted draggable is dropped on the droppable (based on the tolerance option).

accept 选项的默认值为 *,这意味着当 any< 时,默认情况下它将触发 drop 事件/em> draggable 被放入其中。

第二个是您刚刚离开的地方:基于容差选项。 容差的默认值为:

"intersect": Draggable overlaps the droppable at least 50% in both directions.

在你的 fiddle 中,你的 droppable 具有较小的定义宽度。但是,您的可拖动对象却没有。这意味着您的可拖动元素是容器的整个宽度,它比可放置元素宽得多,因此不可能相交 50%。

如果您将 intersect 切换为 touch,您将看到事件正确触发,因为在这种情况下,可拖动对象只需要与可放置对象相交任意数量。

$(document).ready(function () {
    $("#Moveable1").draggable();
    $("#Target1").droppable({        
        tolerance: 'touch',
        drop: dropItem
    });
});

function dropItem(ev, ui) {
    alert("dropped");
    $(this).append($(ui.draggable));
}

这是 fiddle :http://jsfiddle.net/ramrgeop/

关于javascript - 使用 jQuery 将一个 div 移动到另一个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27007253/

相关文章:

javascript - 正文中的淡入淡出背景图像

javascript - 鼠标移动平滑翻译

javascript - 1000 个 div 上的 jQuery 单击事件,优化方法?

javascript - 在循环中重复单词

jquery - 在 jQuery 下拉菜单中选择菜单

c# - C# 中的 jQueryUI 日历单元格

jquery - 抖动效果会影响焦点

jQuery UI 震动 - 填充消失

javascript - 尝试防止从 Mac 键盘输入死键

javascript - jQuery 动画颜色变化