我可以使用$(this).sortable("serialize");
获取portlet的位置/顺序。当我将portlet从一列放到另一列时,它会显示这两列中portlet的更新顺序。这是第2列widget[]=xyz
的更新订单,第3列是widget[]=pqr&widget[]=hij
所以,我的问题是如何知道返回的2数组列表是哪些列?
我可以为每列返回键值对,例如col3: widget[]=pqr&widget[]=hij
和col2 : widget[]=xyz
?
我现在的代码是: -
$( ".column" ).sortable({
connectWith: ".column",
handle: ".portlet-header",
update : function(event, ui) {
var postData = $(this).sortable("serialize");
console.log(postData);
}
});
HTML
<div class="column" id="col1">
<div class="portlet" id="widget_abc">
<div class="portlet-header">Feeds</div>
<div class="portlet-content" >Lorem ipsum dolor sit amet, consectetuer adipiscing elit
</div>
</div>
<div class="portlet" id="widget_def">
<div class="portlet-header">News</div>
<div class="portlet-content" >Lorem ipsum dolor sit amet</div>
</div>
</div>
<div class="column" id="col2">
<div class="portlet" id="widget_hij">
<div class="portlet-header">Shopping</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer</div>
</div>
</div>
<div class="column" id="col3">
<div class="portlet" id="widget_xyz">
<div class="portlet-header">Links</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>
<div class="portlet" id="widget_pqr">
<div class="portlet-header">Images</div>
<div class="portlet-content">Lorem ipsum dolor sit amet, consectetuer adipiscing elit</div>
</div>
</div>
答案 0 :(得分:2)
prevEvent变量不会处理同一事件的两次。 我没有更好的主意......
var prevEvent = null;
$( ".column" ).sortable({
connectWith: ".column",
handle: ".portlet-header",
update : function(event, ui) {
//Have I alredy handled this event?
if(event.timeStamp == prevEvent){
return null;
}
prevEvent = event.timeStamp;
$(".column").each(function(){
console.log($(this).attr('id')+':'+$(this).sortable("serialize"));
});
}
});
结果:
col1:widget[]=def&widget[]=abc
col2:widget[]=hij
col3:widget[]=xyz&widget[]=pqr