jQuery - манипулировать удаленным элементом в сортируемом списке
У меня есть перетаскиваемый список (.field), куда вы можете перетаскивать элементы из него в сортируемый список (.sortlist). Я сделал это таким образом, потому что я не хотел, чтобы основной список (.field) изменялся каким-либо образом. Это работает нормально, за исключением того, что я не могу понять, как манипулировать удаленным полем в сортируемом списке.
Я могу сделать это из перетаскиваемой области в область сброса, используя следующую функцию для drop: в droppable():
$(this).append('html code here to change content of dragged field');
Однако это не работает внутри sortable (). Мой код выглядит так:
$(".sortlist").sortable({
receive: function(event, ui) {
var dropElemTxt = $(ui.item).text();
var dropElemId = $(ui.item).attr('id');
$(ui.item).replaceWith('<li class="box" id="'+dropElemId+'">Updated field! '+dropElemTxt+'</li>');
}
});
$ (ui.item).replaceWith изменяет перетаскиваемое главное поле, поэтому это не работает. И я пробовал $(this).replaceWith, но это обновляет сортируемую область (.sortlist).
Есть идеи, какой код мне нужен для ссылки на перетаскиваемый элемент?
Большое спасибо, Али.
5 ответов
Вы можете получить перетаскиваемый элемент в событие beforeStop:
beforeStop: function (event, ui) { draggedItem = ui.item;},
receive: function (event, ui) { /* use draggedItem here*/ }
Мне достаточно было использовать событие beforeStop вместо receive:
beforeStop: function(event, ui) {
var myClassItem = $('.myClass', ui.item);
myClassItem.bind('click', function(){ /*my function*/ });
}
Я думаю, что я решил это. Немного хакерский, но, похоже, работает!
Мне нужно использовать $('. Sortlist li:last') для доступа к перетаскиваемому элементу...
Я следовал вашему образу мышления, но при таком подходе было несколько ошибок (иногда удаляемый элемент просто исчезал при использовании droppable + sortable). Вот то, что сработало для меня:
$(".draglist").draggable({
start: function(e, ui) {
draggedItem = ui.item;
}
});
$(".sortlist").sortable({
receive: function(event, ui) {
//do something with the 'draggedItem' here...
var droppedElemTxt = draggedItem.text();
var droppedElemId = draggedItem.attr('id');
}
, start: function(e, ui) {
draggedItem = ui.item;
}
});
Невозможность получить доступ к удаленному элементу - известная ошибка в сортируемом интерфейсе JQuery ui. Билет содержит патч, который позволяет вам получить доступ к удаленному элементу, и это, как ожидается, будет исправлено в следующем основном выпуске.
Я думаю, что я действительно придумал лучшее решение... кажется, работает до сих пор...
Я прикрепил dropable к сортируемому объекту, чтобы объявить глобальную переменную перетаскиваемого элемента. Немного так:
$(".sortlist").droppable({
drop: function(e, ui) {
draggedItem = ui.draggable;
}
}).sortable({
receive: function(event, ui) {
//do something with the 'draggedItem' here...
var droppedElemTxt = draggedItem.text();
var droppedElemId = draggedItem.attr('id');
}
});