jQuery Sortable:检查元素数量和行为

时间:2012-02-04 09:36:55

标签: jquery indexing jquery-ui-sortable children

我有这段代码 http://jsfiddle.net/THnan/

但每次我对一个元素进行排序时我想检查有多少个孩子有目标div,如果他们超过N个代码,则应该取目标div的最后一个子节点并将其放在start div的BEGINNING处(即使最后一个孩子是新的排序元素。)

我希望我说清楚。 我怎样才能实现这种行为?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

嗯,使用sortable的receive事件,这是一个“天真的”(如采用第一​​种跳出来的方法)版本。使用N表示两边的最大元素数。

http://jsfiddle.net/3NBT7/1/

$(function(){
   var N = 4;

   $("#left-side, #right-side").sortable({
      axis: "x",
      connectWith: ".droppable",
      receive: reSort
   })
   .disableSelection();

   // Called when a sortable item has been received, see above
   function reSort(event, ui)
   {
      var other, children;

      children = $(this).children();

      if (children.length > N)
      {
         // Find the other sortable panel, based on id. 
         // There are other ways, depending on the HTML.
         other = ($(this).attr("id") == "left-side")
               ? $("#right-side") 
               : $("#left-side");

         // Insert last child before first child of other:
         children.last().insertBefore(other.children().first());
      }
   }
});

如果依靠侧面,我会使用if / else代替:

http://jsfiddle.net/3NBT7/4/

      if (children.length > N)
      {
          if ($(this).attr("id") == "left-side")
          {
              children.last().insertBefore($("#right-side").children().first());
          }
          else
          {
              children.first().insertAfter($("#left-side").children().last());
          }
      }