jQuery, живой перемещаемый / живой сбрасываемый?

В основном существует две таблицы: Компании и посетители. В настоящее время возможно перетащить посетителей компаний. Работает отлично. Как только функция отбрасывания происходит, существует .post's за два $. Первый сохраняет перетаскивание к базе данных. Второй обновляет посетителей, потому что информация постоянно изменяется. Проблема, однако это, как только второй $ .post концы, Firebug продолжает выталкивать следующую ошибку:

d(this).data("draggable") is null

Который происходит в файле UI jQuery. На строке 56.

приблизительно 400 раз или около этого. Так в основном я ищу способ сделать живой () с перемещаемым и сбрасываемым.

.draggables находятся в #visitors (ул.). droppables находятся в #companies (таблица).

Спасибо!

$(".draggable").draggable({
    revert:true
});
$(".droppable").droppable({
    drop: function(ev, ui) {
        $(this).text($(ui.draggable).text());

        $.post('planning/save_visit', {user_id: $(ui.draggable).attr('id'), company_id: $(this).attr('id'), period: $('ul.periods li.active').attr('id')});

        $.post('planning/' + $('ul.periods li.active').attr('id'), {visitors:true}, function(data){
            $('#visitors').html(data);
        });
    },
    hoverClass: 'drophover'
});
6
задан Henk 10 June 2010 в 17:35
поделиться

1 ответ

При перезагрузке посетителей вы заменяете все ] перетаскиваемые элементы, когда вы выполняете $ ('# Посетители'). html (data); - поэтому те, которые были перетаскиваемыми, удаляются и заменяются новыми элементами, которые нельзя перетаскивать. (Я почти уверен, что вы это понимаете, из-за упоминания .live () , так что это здесь просто для полноты)

Однако вы знаете точно когда изменяются элементы посетителя, поэтому вместо альтернативы .live () почему бы просто не сделать еще один запрос для эффекта перетаскивания сразу после изменения. Возможно, будет безопаснее «уничтожить» старые перетаскиваемые предметы, прежде чем заменять их, но я не уверен, что это строго необходимо.

$.post('planning/' + $('ul.periods li.active').attr('id'), {visitors:true}, function(data){      
    $(".draggable").draggable("destroy");
    $('#visitors').html(data); 
    $(".draggable").draggable({ revert:true }); 
}); 
9
ответ дан 8 December 2019 в 14:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: