$('.batch_listing').sortable({
forcePlaceholderSize: true,
forceHelperSize: true,
placeholder: 'photo_ghost',
helper: 'clone',
receive: function(event, ui)
{
if(!is_in_batch(ui.item.children("a").children("img").attr("data-photo-id")))
{
add_to_batch_dispatch(ui.item.children("a").children("img").attr("data-photo-id"));
} else {
//Remove from batch
$(this).sortable("cancel");
alert("shouldn't be added");
}
},
sort: function(event, ui) {
if(placing == false)
{
$(".destory_drop").fadeIn();
}
},
stop: function(event, ui) {
if(removing == false)
{
$(".destory_drop").fadeOut();
}
}
}).disableSelection();
このソート可能に接続されている一連のドラッグ可能なものがあります。
$("#photo_browser li").draggable({
snap: false,
revert: 'invalid',
helper: 'clone',
appendTo: "body",
cursor: 'move',
opacity: 0.5,
connectToSortable: "ul.batch_listing",
start: function(e, ui){
placing = true;
},
stop: function(e, ui){
placing = false;
}
});
コード自体は正しく機能しています。is_in_batch と add_to_batch_dispatch は、アイテムから ID をログに記録し、それが既にソート可能に存在するかどうかを確認するだけです。ただし、 を呼び出すたびに$(this).sortable("cancel")
、ドラッグ可能なものはソート可能なものにドロップされます (コード内のテストアラートが呼び出されます)。
もともと、これはどこかで停止する前に機能していました。私はその理由を見つけるために何時間も費やしてきたので、助けていただければ幸いです。