我有以下代码。我想知道的是从#files转移到#gallery,反之亦然。通过这种方式,我发送了已发生变化的内容,并且不会将后端绑定到工作中。
$( "#files, #gallery" ).sortable({
connectWith: ".connectedSortable",
update : function () {
alert($(this).sortable('serialize'));
}
});
<ul id="files" class="connectedSortable">
<li id="g_1">G1</li>
<li id="g_2">G1</li>
<li id="g_3">G1</li>
<li id="g_4">G1</li>
</ul>
<div class="clear:both;"></div>
<ul id="gallery" class="connectedSortable"></ul>
答案 0 :(得分:1)
如果要比较它们,则必须存储初始状态,可以使用'toArray'
返回要比较的数组。这是使用'serialize'
var $files_init, $gallery_init, options = {
connectWith: ".connectedSortable",
create : function (){
window['$'+this.id+'_init'] = $(this).sortable('serialize');
console.log(window['$'+this.id+'_init']);
},
update : function () {
alert($(this).sortable('serialize'));
console.log(window['$'+this.id+'_init']);
}
};
$( "#files, #gallery" ).sortable(options);
我在这里使用了一些技巧,在create&amp; amp;中使用动态变量名称。更新功能。现在你只需要一种比较它们的方法。这是JSfiddle http://jsfiddle.net/G5sxn/3/在有才华的John Resig's diffString function的帮助下展示的futzing around。
使用PHP,您可以array_diff
进行比较,但我不知道在JS中使用它的可靠方法。我一直{{3}}但我不确定最好的方法。
另外,您缺少更新功能的结束括号。