カスタマイズされたアニメーション化されたソータブルがあります。唯一の問題はオプションです
tolerance : "intersect"
期待どおりに動作しません。私が期待しているのは、要素が別の要素の上にドラッグされ、重なった要素がドラッグされた要素によって +50% 重なったときに、並べ替えが開始されることです。
ただし、これは jqueryUI のバグのようで、実際には 50% ではなく 100% 交差でオーバーラップする必要があります。
このスレッドのようにSOで見つけたソリューションは、ソート中にクローンを使用して要素をアニメーション化するため、私のコードでは機能しません。
jQuery UI のソート可能な許容範囲オプションが期待どおりに機能しない
私の状況とコードを考えると、この問題にどのように取り組むことができますか?
これに対する既知の回避策はありますか?
これは同じ質問だと思いますが、私の状況は異なり、これを解決するためのより良い方法があるかもしれません。
ここに私のコード:
http://jsbin.com/otoquh/19/edit
$("#original_items li").each(function(){
var item = $(this);
var item_clone = item.clone();
item.data("clone", item_clone);
var position = item.position();
item_clone.css("left", position.left);
item_clone.css("top", position.top);
$("#cloned_items").append(item_clone);
});
$("#original_items").sortable({
start: function(e, ui) {
ui.helper.addClass("exclude-me");
$("#original_items li:not(.exclude-me)").css("visibility", "hidden");
ui.helper.data("clone").hide();
},
stop: function(e, ui){
$("#original_items li.exclude-me").each(function() {
var item = $(this);
var clone = item.data("clone");
var position = item.position();
clone.css("left", position.left);
clone.css("top", position.top);
clone.show();
item.removeClass("exclude-me");
});
$("#original_items li").css("visibility", "visible");
},
change: function(e, ui) {
$("#original_items li:not(.exclude-me, .ui-sortable-placeholder)").each(function() {
var item = $(this);
var clone = item.data("clone");
var position = item.position();
clone.stop(true, false);
clone.animate({
left: position.left,
top: position.top
}, 500);
});
},
revert: 500,
axis: "y"
});