Ответ 1
Это должно работать:
$(function() {
$("#catalog").accordion();
$("#catalog li").draggable({
appendTo: "body",
helper: "clone"
});
$("#cart ol").droppable({
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
accept: ":not(.ui-sortable-helper)",
drop: function(event, ui) {
$(this).find(".placeholder").remove();
$("<li></li>").text(ui.draggable.text())
.addClass("cart-item")
.appendTo(this);
}
}).sortable({
items: "li:not(.placeholder)",
sort: function() {
$(this).removeClass("ui-state-default");
}
});
$("#catalog ul").droppable({
drop: function(event, ui) {
$(ui.draggable).remove();
},
hoverClass: "ui-state-hover",
accept: '.cart-item'
});
});
Примечания
- Когда элемент упал в области корзины, я добавил класс
cart-item
к новому элементу. - Я сделал каталог
ul
droppable; эта область принимает толькоcart-item
s. Он вызываетremove()
, чтобы удалить элемент из корзины после того, как произошла капля.
Посмотрите, как он работает здесь: http://jsfiddle.net/andrewwhitaker/t97FE/embedded/result/
Вы можете перетащить элемент из корзины в любую категорию в каталоге, но я думаю, было бы довольно легко сделать элементы, перетаскиваемые только в исходные категории.