jQuery droppable问题

时间:2011-12-21 17:19:22

标签: jquery-ui-droppable

我编写了jQuery代码,允许用户在屏幕上创建2个框,然后将其拖放到另一个框中。从HTML的角度来看,它看起来像这样......

<div id="1">
    <div id="2">
    </div>
</div>

如果我然后创建另一个框并将其拖到框2上并放下它,它总是被放入框1(即框2的父框)。我想要的是......

<div id="1">
    <div id="2">
        <div id="3">
        </div>
    </div>
</div>

......但我得到的是这个...

<div id="1">
    <div id="2">
    </div>
    <div id="3">
    </div>
</div>

你[可以接受] 可以看到这里发生的事情...... http://acarna.com/editor.php&lt; - 我已经解决了问题...请参阅下面的答案

单击左上角的“H”按钮创建一个框。抓住框右上角的灰色方块,将其向下拖动到页面中。将鼠标移到框的边缘或角落,然后调整其大小。

然后再次单击“H”以创建框2.将框2拖放到框1中。这可以正常工作。如果你使用Firefox,你可以看到在鼠标悬停时添加到方框1的方框。

我遇到的问题是在创建方框3时,将其移到方框2上并尝试将其放入内部。它只检测到第1个框并将其放入其中。

当框3被拖过它时,是否有一些技巧我缺少jQuery检测框2,而是将它添加到那里?

1 个答案:

答案 0 :(得分:1)

在与jQuery UI(ahem)稀疏文档挣扎之后,我只是有一点清晰。

droppable选项'greedy'确定一个对象落在可放置对象树上时落地的位置。

设置为false(默认值)时,删除的对象将落在树中最低的droppable对象上。设置为true时,被删除的对象将落在树中的第一个(即最高的)可放置对象上。

这可以通过示例使用以下标记来证明。想象一下,以下div都是可放置的对象......

<div id="bottom_container">
    <div id="level_2_container">
        <div id="level_3_container">
        </div>
    </div>
</div>

在div#level_3_container上删除了一个可拖动的对象(下面给出了id =“all_new_container”)。如果贪婪是假的(即默认值)......这就是结果的标记......

<div id="bottom_container">
    <div id="level_2_container">
        <div id="level_3_container">
        </div>
    </div>
    <div id="all_new_container">
    </div>
</div>

如果将greedy设置为true,则会产生标记...

<div id="bottom_container">
    <div id="level_2_container">
        <div id="level_3_container">
            <div id="all_new_container">
            </div>
        </div>
    </div>
</div>

如果您有Firebug,您可以在此处将对象拖放到其他对象中时观察上述情况...... http://acarna.com/editor.php

请原谅新的丢弃元素落在2级以外的错误位置的定位错误。我不会在上面的示例中修复它,并且没有必要为上述演示这样做。