【问题标题】:jQueryUI Drag-n-Drop: clone not droppingjQuery UI 拖放:克隆不丢弃
【发布时间】:2013-01-14 21:12:14
【问题描述】:

我正在玩一些拖放 ui,但我对 DROP 有点困惑。
你可以see the Fiddle here

近期目标:
我只需要了解如何将 .draggable 跨度放入任一 .droppable div。
假设我使用 append() 走在正确的道路上,我该如何访问克隆的内容?

终极目标:
最终,我需要添加一种从放置区 div 中删除项目的方法,并将 .textfield 输入/div 限制为仅接受一次放置(.textarea 输入/div 可以接受无限数量的“有效载荷” ")。

代码:

/* html */
<table>
    <thead>    
        <tr role="row">
            <th class="sorting_asc" role="columnheader" tabindex="0" aria-controls="DataTables_Table_0" rowspan="1" colspan="1" style="width: 494px;" aria-sort="ascending" aria-label="Company: activate to sort column descending">Company</th>
            <th class="sorting_disabled" role="columnheader" rowspan="1" colspan="1" style="width: 66px;" aria-label="Contact">Contact</th>
            <th class="sorting_disabled" role="columnheader" rowspan="1" colspan="1" style="width: 79px;" aria-label="&amp;nbsp;">&nbsp;</th>
        </tr>
    </thead>
    <tbody role="alert" aria-live="polite" aria-relevant="all">
        <tr class="odd">
            <td class="sorting_1 has_draggable_children">
                <span draggable="true" class="ui-draggable" data-companyid="0101" data-companyname="**BD">**BD</span>
            </td>
            <td><a href="#4621">Contacts</a></td>
            <td><a href="#4621">Edit</a>
                <a href="#4621">Delete</a>
            </td>
        </tr>
        <tr class="even">
            <td class="sorting_1 has_draggable_children">
                <span draggable="true" data-companyid="0202" data-companyname="0024" class="ui-draggable">0024</span>
            </td>
            <td><a href="#4438">Contacts</a></td>
            <td><a href="#4438">Edit</a>
                <a href="#4438">Delete</a>
            </td>
        </tr>
        <tr class="odd">
            <td class="sorting_1 has_draggable_children">
                <span draggable="true" class="ui-draggable" data-companyid="0303" data-companyname="Acme, Inc.">Acme Anvil Corp</span>
            </td>
            <td><a href="#4621">Contacts</a></td>
            <td><a href="#4621">Edit</a>
                <a href="#4621">Delete</a>
            </td>
        </tr>
   </tbody>
</table>

<section class="offset7" id="dragged-drop-zone" >
    <div class="look-like-input textfield droppable" contenteditable></div>
    <br />
    <div class="look-like-input textarea droppable" contenteditable></div>
</section>

.

/* js */
// DRAG
$('span[draggable]').draggable({
    revert: true,
    helper: "clone"
});

// DROP
$('.droppable').droppable({
    tolerance: 'pointer',
    drop: function(event, ui) {
        //console.log(this);
        $(this).append($(ui.helper));
    }
});

欢迎任何和所有的帮助和建议

【问题讨论】:

    标签: javascript jquery-ui drag-and-drop


    【解决方案1】:

    好吧……到头来了。

    clone 似乎并不像人们期望的那样运作。
    您最终必须使用自定义函数将您自己的克隆打包到一个对象中,然后将其从 drop 中的对象中拉回。

    您可以在 jsFiddle 上see the working example here
    最终效果如下:

    // Drag
    $('span[draggable]').draggable({
        revert: true,
        helper: function() {
            var container = $('<div/>');
            var dragged = $(this);
            container.append(dragged.clone());
            return container;
        }
    });
    
    // Drop
    $('.droppable').droppable({
        tolerance: 'pointer',
        drop: function(event, ui) {
            $(this).append($(ui.helper.children()));
        }
    });
    

    【讨论】:

    • 应该真的被标记为一个错误 IMO...无法理解为什么 jq 团队会选择这样做,当对象被拖拽的那一刻很明显被克隆了 - 那什么时候应该被复制。
    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 2018-07-25
    • 2012-02-06
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多