JQuery的UIsorting索引更改重新sorting列表

我正在尝试使用socket.io和node.js允许2个用户同时查看JQuery UI可sorting列表。 我希望两个用户列表在一个用户进行更改时进行更新。

这是我现在拥有的:

client.js

$("#layerColumn").on( "sortstop", function( event, ui ) { // Send new list of layers to everyone socket.emit('moveLayers', ui.item.attr('id'), ui.position); }); socket.on('moveLayer', function(layer, position) { $('#'+layer).offset(position); $(".layerColumn").sortable( "refreshPositions" ); }); 

server.js

 socket.on('moveLayers', function(layer, position) { socket.broadcast.emit('moveLayer', layer, position); }); 

这会移动第一个用户列表中的项目,但不会将它们重新排列在第二个用户列表中,只是将它们放在第一个用户“放置”它们的位置。

有任何想法吗? 谢谢!

编辑05/08/2013:

将此移至ANSWER。

如果你知道有什么办法可以做得更好,请让我知道,因为我仍然感兴趣。

把编辑移动到答案(我希望回答我自己的问题是可以接受的)。

我记得可sorting只是看在容器中的项目,所以使用jQuery我可以重新sorting对象根据数组。

我通过socket.io将数组作为一个数组发送,然后为第二个用户重新添加可sorting容器中的所有项目。

client.js

 $("#layerColumn").on( "sortstop", function( event, ui ) { // Send new list of layers to everyone socket.emit('moveLayers', $( "#layerColumn" ).sortable( "toArray" )); }); socket.on('moveLayer', function(layers) { console.log(layers); $.each(layers, function() { $("#"+this).appendTo("#layerColumn"); }); $("#layerColumn").sortable( "refresh" ); }); 

server.js

 socket.on('moveLayers', function(layers) { socket.broadcast.emit('moveLayer', layers); }); 

希望这能够帮助遇到类似问题的其他人。

如果你知道有什么办法可以做得更好,请让我知道,因为我仍然感兴趣。