jQuery: перетаскиваемое соединение с сортируемым. перетаскиваемый элемент имеет другой DOM из сортируемого списка - PullRequest
12 голосов
/ 12 апреля 2009

Теперь я могу перетащить элемент в сортируемое. Но сортируемый список имеет другой DOM.

<!-- The draggable items. Has the "original" DOM in the LI tags. -->
<ul class="draggable_text">
    <li><span>DRAG THIS A</span></li>
    <li><span>DRAG THIS B</span></li>
</ul>


<!-- This list has a different DOM in the LI tags -->
<ul id="stagerows">
    <li><p>This is a new DOM dragged from "DRAG THIS A"</p></li>
    <li><p>This is a new DOM dragged from "DRAG THIS B"</p></li>
</ul>

$(document).ready(function() {
    $('.draggable_text > li').draggable({
        //helper:'clone',
        helper: function(event, ui) {
            return '<div style="width: 100px; height: 50px; border: 1px solid #000; background-color: #fff;">xxx</div>';
        },
        connectToSortable:'#stagerows'
    });

    $('#stagerows').sortable({
        handle: '.drag_handle'
    });
});

Помощник имеет это: ххх Это должно быть сброшено в сортируемый ...

"Помощник" работает. Но когда я «уронил» предмет в сортируемое, он просто возвращается к «оригинальному» DOM. Я бы хотел, чтобы «вновь созданный DOM» (созданный в помощнике) был помещен в сортируемую.

Надеюсь, у меня есть смысл. Спасибо!

Другой способ сказать это: когда я тащу яблоко, теперь оно превращается в апельсин. но когда я уронил его, он снова превратился в яблоко ..

1 Ответ

12 голосов
/ 12 апреля 2009
$('.draggable_text > li').draggable({
    helper: function(event, ui) {
        var type = $(this).find('.link_type').val();
        return create(type,0);
    },
    connectToSortable:'#stagerows'
});

$('#stagerows').sortable({
    handle: '.drag_handle',
    placeholder: 'placeholder_sortable'
});

/**
 * When item is dropped from the Add <Stuff>
 */
$('#stagerows').droppable({
    drop: function(event, ui){
        type = ui.draggable.find('.link_type').val();
        ui.draggable.empty();
        return ui.draggable.html(create(type,0))
    }
});
...