【发布时间】:2026-01-29 20:05:02
【问题描述】:
我正在使用 JQuery 可排序。我想知道是否有可能在多次求助后将可排序控件恢复到类似于表单重置的原始状态。 “取消”选项似乎只影响最后一次排序尝试,而不是全部。
【问题讨论】:
-
也许将默认顺序存储在数据属性中?
我正在使用 JQuery 可排序。我想知道是否有可能在多次求助后将可排序控件恢复到类似于表单重置的原始状态。 “取消”选项似乎只影响最后一次排序尝试,而不是全部。
【问题讨论】:
这个方法很简单
$( "#sortable" ).sortable( "cancel" );
【讨论】:
我个人喜欢这样做:
$("#sortable").sortable({config...});
var cache = $("#sortable").html();
重置时
$("#sortable").html(cache).sortable("refresh");
我尝试使用 .clone() 和 .children() 甚至 $("#sortable > *),但发现缓存 .html() 是最好的选择。
在我的情况下,我有两个连接列表。一个包含用户可以排序或删除的当前项目,另一个包含用户可以从中抓取以添加到“当前项目”列表的可用项目列表。我需要一种将所有内容重置为原始状态的方法。上面的效果很好。
【讨论】:
您可以在文档就绪时缓存父级的副本,并在重置时恢复它。
例如,如果<ul class="parent"> 是您的可排序元素:
var sortableCache;
$(document).ready(function() {
...
$('ul.parent').sortable({ ... });
...
sortableCache = $('ul.parent').clone(true);
});
重置后,您可以:
$('ul.parent').replaceWith(sortableCache);
【讨论】:
存储对原始元素顺序的引用,然后使用它对它们重新排序。
var sortableElements = $("#sortable div");
$("#sortable").sortable();
现在,当您想要恢复原始排序顺序时,只需将 div 附加到 #sortable 元素即可。
$("#sortable").append(sortableElements);
【讨论】: