简体   繁体   English

jQuery UI可拖动元素被放入可排序

[英]jQuery UI draggable element dropped into sortable

I have a list of draggable items, and I wish to be able to drag them onto a sortable content block. 我有一个可拖动项目列表,我希望能够将它们拖到可排序的内容块上。 Here's my markup: 这是我的标记:

<div class='items'>
    <div class="one">One</div>
    <div class="two">Two</div>
</div>

<div class="content">
    <div class="block">Foo</div>
    <div class="block">Bar</div>
</div>

The thing is, that I want the dragged item to "become" a block as soon as the dragging starts and remain a block when it's dropped. 问题是,我希望拖动的项目在拖动开始时“成为”一个块,并在它被删除时保持一个块。 I have tried this: 我试过这个:

$('.items div').draggable({
    helper: function(e) {
        return $('<div>').addClass('block').text( $(e.target).text() );
    },
    connectToSortable: ".content"
});

$('.content').sortable();​

Fiddle: http://jsfiddle.net/MF4qu/ 小提琴: http//jsfiddle.net/MF4qu/

But even if I create a custom helper that looks like a block, it reverts back to the original dragged element as soon as it's dropped. 但即使我创建一个看起来像块的自定义帮助器,它一旦被删除就会恢复到原始拖动的元素。 Does anyone know how to properly insert a block in my example page? 有谁知道如何在我的示例页面中正确插入一个块? I already looked through the UI API but I can't figure it out. 我已经查看了UI API,但我无法弄明白。

When the draggable element is dropped into sortable, it triggers the sortable update event. 当draggable元素被放入sortable时,它会触发可排序的update事件。 One solution is to listen to that event, and turn the dropped item into a block: 一种解决方案是侦听该事件,并将删除的项目转换为块:

$('.items div').draggable({
    helper: function(e) {
        return $('<div>').addClass('block').text( $(e.target).text() );
    },
    connectToSortable: ".content"
});

$('.content').sortable({
    update: function (event, ui) {
        ui.item.addClass('block');
    }
});​

Working demo: http://jsfiddle.net/DaXuT/1/ 工作演示: http //jsfiddle.net/DaXuT/1/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM