私は最近アップグレードを余儀なくされました:
- jQuery 1.7.1 から 1.8.3 へ
- jQueryUI 1.8.9 から 1.9.2 へ
(Blueimp の jQuery File Upload の最新バージョンと互換性を持たせるために、アップグレードを余儀なくされました。)
(1.7.1 / 1.8.9) で完全に機能する次のコードがあります。
$( "div.archive li" )
.draggable({ // make the archive-icons draggable and connect to the album(s)
connectToSortable: handleSortable, // ,"#album_45 ul", //
helper: "clone", // (helper must be set to 'clone' in order to work flawlessly),
revert: "invalid",
appendTo: "body"})
と
sortableUL.sortable({
helper: 'clone',
appendTo: "body",
update : function () {
var serializedSequence = sortableUL.sortable('serialize'); // Fails in jQueryui/1.8.21 !!
$.ajax({
url: "/callback/upAlbum",
type: "post",
data: serializedSequence,
success: function(htmlData){
sortableUL.html(htmlData);
recursiveSortable(albumID, joPanel); // once the newly ordered zone-album has been read, recurse back to: make list sortable & slidable
}
}); // END $.ajax
} // END update : function ()
});
上記のコードは、古い jQuery および jQueryUI では問題なく動作しますが、新しいバージョンでは失敗します。古いバージョンにダウングレードすると、コードは再び機能します (ただし、jQuery FileUploader は機能しません!)。
新しいセットアップでは、エラー メッセージは生成されません。ただし、次のシナリオが実行されます。
ドラッグ可能なリスト項目は<li id="icon_1234">
. これらが にドロップされると.sortable()
、受け入れられます。したがって、それらは になり<li>
ます.sortable()
<ul>
。ただし、その時点でid="icon_1234"
は削除されます。のその他の属性<li>
はそのまま残されます。
更新:実際には、が に追加されるid="icon_1234"
と が削除されるため、明らかに問題の原因ではありません。ただし、オプションをコメントアウトしても問題は変わりません。<li>
<body>
.droppable()
appendTo:
もちろん、 がなければid="icon_1234"
、新しくドロップされた<li>
ものは以下のステートメントに耐えられません:
var serializedSequence = sortableUL.sortable('serialize');
そのため、更新コールバックの後、新しくドロップさ<li>
れたものがリストから消え.sortable()
ます。
私は本当にこの問題を解決する方法についての予感がありません...