2012-02-13 70 views
1

如何定义要在可排序中接受哪些项目?定义什么Sortable接受?

一样,说我有以下伪标记:

<ul id="draggable"> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li class="nodrag">Item 3</li> 
    <li>Item 4</li> 
</ul> 

<ul id="sortable"> 

</ul> 

我使用了可拖动的connectToSortable选项将其连接到排序。因为我在sortables(INCEPTION !!;)中有sortables)我想能够决定一个draggable是否被允许放在一个特定的排序上。

我该怎么做?我目前使用可排序的停止事件来操纵掉落的对象 - 我尝试移除该对象,如果它包含nodrag类,但仍然显示“快照”效果(可拖动的缓慢移动到可排序位置的效果)

有什么办法可以做到这一点?

回答

2

我有一个类似的问题,我正在写一个拖放式应用程序。我的问题是,我有,说,3名排序列表如下:

<ul class="apple"> <!-- accepts apples --> 
</ul> 

<ul class="apple orange"> <!-- accepts apples and oranges --> 
</ul> 

<ul class="orange banana"> <!-- accepts oranges and bananas --> 
</ul> 

然后我有可能被拖入这些列表苹果,橘子和香蕉另一主列表。这个问题显然是限制可拖动的,以便它们不能被放入不兼容的列表中。

我所要做的就是使用可拖动表上的connectToSortable选项来指定它们可以放入哪些列表。因此,我可能会这样定义我的可拖动对象:

<li class="drag-apple">...</li> 
<li class="drag-orange">...</li> 
<li class="drag-banana">...</li> 

$(li.drag-apple).draggable({ connectToSortable: '.apple', ... }); 
$(li.drag-orange).draggable({ connectToSortable: '.orange', ... }); 
$(li.drag-banana).draggable({ connectToSortable: '.banana', ... }); 

有了这个设置,可拖动对象只会定位到适当的列表。

就你而言,我不确定嵌套的sortables是否会造成额外的复杂性。但是,您可能需要查看嵌套的可排序插件(nested Sortable)。希望类似的技术将在那里工作。

+0

谢谢您的回答,但很久以前我重新设计了我的方法。 :) – Jeff 2012-05-13 18:12:40

+0

我认为,但答案可能会帮助其他人。我不认为你能接受它? – OzBandit 2012-05-13 19:27:24

+0

当然,你去了 – Jeff 2012-05-15 15:09:18