如何检查特定列表是否可排序?像$('#list').is(':sortable')
...?如何检查列表是否可排序?
如果我们将使用
if ($('#list').sortable())
则列表将进行再次排序,而不是检查实际上它是排序。
如何检查特定列表是否可排序?像$('#list').is(':sortable')
...?如何检查列表是否可排序?
如果我们将使用
if ($('#list').sortable())
则列表将进行再次排序,而不是检查实际上它是排序。
如果列表已经可以排序,那么它应该有类ui-sortable
。
您可以使用if ($('#list').hasClass('ui-sortable'))
来检查它。
如果页面从数据库重新加载,并且所附的类保存了html,则它不起作用。然而,jebbie建议的方法在从db重新加载页面时是完美无瑕的。 – arkoak 2013-09-29 08:34:28
当应用排序,只需添加一个虚拟类,像这样的元素,
$("#sortable").sortable();
$("#sortable").addClass("antguider");
然后,如果你要检查的元素排序,然后检查这个样子,
if($("#sortable").hasClass("antguider")){
alert("Already Sort Applied");
}
我刚刚发现,它的数据接口也在工作:
if ($('#sortable').data('sortable')) {
// sortable instance exists
}
但我不得不说...我相信最新的jQuery版本,这是行不通的(我不得不将我的最新项目中的所有代码实例更改为css-class-detection) – jebbie 2013-11-04 13:25:32
感谢这对我有用。 – 2016-03-15 13:30:00
我在Safari中发现(也许是其他人)t他班不可靠。 'ui-sortable'仍然保留在任何可以分类的项目上,即使你禁用它,这也会导致类的'ui-sortable ui-sortable-disabled'被使用。
我发现自己只是自己添加和删除类,以确保它们符合我的预期。
if ($(this).hasClass("ui-sortable")) {
$(this).removeClass("ui-sortable");
$(this).sortable({ disabled: true });
}
else {
$(this).addClass("ui-sortable");
$(this).sortable({ disabled: false });
}
- 编辑
好了,这些类是可靠的,但我是什么后没有被禁止,而是.sortable(“毁灭”),它返回到它的初始化到之前状态的元素(即删除所有助手类)。
所以我排序的切换(这是我创建的):
if ($(this).hasClass("ui-sortable")) $(this).sortable("destroy");
else $(this).sortable();
有2012年后的jQuery版本的变化,所以现在你可以这样写:
if ($('#sortable').data('ui-sortable')) {
// sortable instance exists
}
或
if ($('#sortable').is(':ui-sortable')) {
// sortable instance exists
}
可能重复的[查找有jQuery小部件初始化对他们的元素](http://stackoverflow.com/questions/11251765/find-元素 - 其具备的,jQuery的窗口小部件初始化-在-它们)。只需使用'data(“sortable”)'而不是'data(“fileupload”)'。 – 2012-07-22 11:34:38