我最近被迫升级:
- jQuery 从 1.7.1 到 1.8.3
- jQueryUI 从 1.8.9 到 1.9.2
(我被迫升级以兼容最新版本的 Blueimp 的 jQuery 文件上传。)
我有以下代码,在 (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()
我真的不知道如何解决这个问题......