如何获得可排序的键值对(“序列化”);

时间:2013-09-09 17:46:55

标签: jquery jquery-ui jquery-ui-sortable

我可以使用$(this).sortable("serialize");获取portlet的位置/顺序。当我将portlet从一列放到另一列时,它会显示这两列中portlet的更新顺序。这是第2列widget[]=xyz的更新订单,第3列是widget[]=pqr&widget[]=hij

所以,我的问题是如何知道返回的2数组列表是哪些列? 我可以为每列返回键值对,例如col3: widget[]=pqr&widget[]=hijcol2 : 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>

1 个答案:

答案 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