サンプルのショッピング カートのデモに基づいて、jQuery のドラッグ可能およびドロップ可能を実装しました。<li>
ドロップ可能からドラッグすると、ドロップ可能から削除できるようにしたいと思います。これはdroppable outイベントと関係があるのではないかと思いましたが、uiパラメーターが空です。誰かが解決策を知っていますか?
質問する
8283 次
3 に答える
5
これは完全に機能するソリューションであり、完全にテストされていません。おそらくデバッグする必要があります。
$(function () {
$("#catalog").accordion();
$("#catalog li").draggable({
appendTo: "body",
helper: "clone"
});
$("#cart ol").droppable({
out: function (event, ui) {
var self = ui;
ui.helper.off('mouseup').on('mouseup', function () {
$(this).remove();
self.draggable.remove();
});
},
activeClass: "ui-state-default",
hoverClass: "ui-state-hover",
accept: ":not(.ui-sortable-helper)",
drop: function (event, ui) {
if (ui.draggable.is('.dropped')) return false;
$(this).find(".placeholder").remove();
$("<li></li>").text(ui.draggable.text()).appendTo(this).draggable({
appendTo: "body",
helper: "clone"
}).addClass('dropped');
}
}).sortable({
items: "li:not(.placeholder)",
sort: function () {
// gets added unintentionally by droppable interacting with sortable
// using connectWithSortable fixes this, but doesn't allow you to customize active/hoverClass options
$(this).removeClass("ui-state-default");
}
});
});
于 2013-04-30T18:06:26.163 に答える
0
A.Wolff のソリューションは私を正しい軌道に乗せましたが、この投稿の Drew のソリューションを介して sortable.out 関数を使用しました: How to remove an item that is pull away from it's list? より良い解決策です
$(function () {
var removeIntent = false;
$("#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()).appendTo(this);
}
}).sortable({
items: "li:not(.placeholder)",
sort: function () {
// gets added unintentionally by droppable interacting with sortable
// using connectWithSortable fixes this, but doesn't allow you to customize active/hoverClass options
$(this).removeClass("ui-state-default");
},
over: function () {
removeIntent = false;
},
out: function () {
removeIntent = true;
},
beforeStop: function (event, ui) {
if(removeIntent == true){
ui.item.remove();
}
}
});
});
于 2015-04-10T16:17:42.740 に答える
0
CSS を使用して、リストのスタイルを変更できます。このようなものが動作するはずです:
.ui-droppable .ui-sortable ol { list-style: none outside none; }
またはさらに良い
#cart ol { list-style: none outside none; }
お役に立てれば!
于 2013-04-30T17:40:37.040 に答える