如果 n 列出了可在列表中排序的 m 项目,我如何从上到下获取所有列表中所有项目的ID的整体列表(包括排序参与者和非参与者)?
我的项目列表如下所示:
Category 1
- (id=a) Item 1A
- (id=b) Item 1B
Category 2
- (id=c) Item 2A
- (id=d) Item 2B
Category 3
- (id=e) Item 3A
- (id=f) Item 3B
这些项目在各个类别中均为Sortable
,并通过connectWith
连接(请参阅下面的代码)。例如,项目2B可以拖放到类别1中。
我可以使用update
和toArray
来获取要拖动的部分的ID以及要拖动的部分,但是有一种干净的方法来访问所有这些吗?我需要以某种方式手动构建它吗? 如何以当前排序顺序获取所有 ID列表?
例如,如果我将项目2B拖到类别1中的第一个位置,我可以得到两个update
的两个数组的数组列表,第一个包含“d”(我移动的列表)和第二个包含“c,a,b”(我移动到的列表)。如何获得包含“c,a,b,d,e,f”的列表?这是在点击按钮时发生的,所以我不限于update
,如果有更好的机制来获取信息。
答案 0 :(得分:2)
似乎没有本机功能可以执行此操作,因此我created a demo会迭代所有.sortable
元素以创建一个阵列,并使用Firebug登录Chrome或Firefox中的控制台。我还将update
更改为receive
,因此它只触发一次(见jQueryUI sortable documentation)。
答案 1 :(得分:2)
另一种方法是循环遍历所有可排序的子元素并记录它们的顺序。
$('.sortable').sortable({
items: '> tr.child',
connectWith: $('tbody'),
receive: function(event, ui) {
var myOrder = new Array();
$(".sortable tr.child").each(function() {
myOrder.push($(this).attr("id"));
});
console.log(myOrder.toString());
}
});
这具有允许随时添加和删除可排序容器的额外好处 - 该脚本无论如何都可以使用。