2010-10-25 21 views
3

我有一些用户可以对li进行排序的ul。我有2种不同的li,需要限制他们可以放入哪个列表。这里是一个小例子:JQuery UI Sortable - 限制下降到某些元素

<ul class="top"> 
    <li class=typeA">Item</li> 
    <li class=typeA">Item</li> 
    <li class=typeB">Item</li> 
     <ul class="sub"> 
      <li class=typeB">Item</li> 
      <li class=typeB">Item</li> 
      <li class=typeB">Item</li> 
     </ul> 
</ul> 

<ul class="top"> 
    <li class=typeA">Item</li> 
    <li class=typeA">Item</li> 
    <li class=typeA">Item</li> 
</ul> 
  1. 类型A永远只能出现在顶层,而且必须只能被丢弃到另一个顶级组。

  2. TypeB可以出现在顶部或子级别,并且必须能够放入任一组。

  3. 此外,子ul组必须能够从一个顶层组丢弃。

使用下面的代码,我能够acheive点1和部分2点,但是当一个类型B已从子组进入前组它就可以永远不会回去:

$(function() { 
    $('.connectedSortable').sortable({ 
     'items': '> li', 
     'connectWith': '.connectedSortable' 
    }); 
    $('.subList').sortable({ 
     'items': 'li', 
     'connectWith': '.connectedSortable' 
    }); 
}); 

任何帮助将不胜感激。

感谢

回答

0

我不认为你可以只用配置表,因为一旦你移动A B项至顶层实现这个它要表现得像一个A项。我认为你将不得不在每个表上设置事件,比如'over'事件,并编写代码来检查被移动的项目是否属于这个列表。