【发布时间】:2009-09-15 22:41:44
【问题描述】:
感谢阅读。
两个问题:
我正在创建一个任务列表类型的系统,它将使用嵌套的可排序列表。
这是一些非常基本的演示代码:
<script>
$(function(){
$('.sortable_test > li').attr('style', 'border:1px solid red; padding:3px; margin:2px;');
$('.sortable_test').sortable({
distance: 5,
connectWith: ['.sortable_test'],
placeholder: 'ui-state-highlight',
forcePlaceholderSize: true
});
})
</script>
<ul class='sortable_test'>
<li>
Item
<ul class='sortable_test'>
<li>
Item
</li>
<li>
Item
</li>
<li>
Item
</li>
<li>
Item
</li>
<li>
Item
</li>
<li>
Item
</li>
<li>
Item
</li>
</ul>
</li>
<li>
Item
</li>
<li>
Item
</li>
<li>
Item
</li>
<li>
Item
</li>
<li>
Item
</li>
<li>
Item
</li>
</ul>
问题 1:
如果您尝试从嵌套子列表中拖动一个项目,在该列表中,它会非常有效。如果您尝试重新排序主列表中的项目,也是如此。
但是,如果你想将一个项目从子列表拖到主列表,或者反之亦然,它可以做到,但占位符不会立即出现,它会尝试将它保持在同一个列表中。您必须将它拖到所有地方,然后它才会注册到您所在的列表中。
最终,它似乎意识到您想要进入或退出子列表,但它非常古怪。
我在想也许对于哪个列表具有优先权感到困惑,因为从技术上讲,您在两者上拖拉。
因此,如果您尝试将一个项目从主列表拖动到子列表,它会将整个子列表视为单个项目并尝试将其移过。
有人遇到过吗?有什么想法吗?也许有一种方法可以指定哪个列表具有优先级,或者让插件更清楚您对哪个列表感兴趣?
问题 2:
如果您抓住第一个项目,即带有子列表的大项目,并尝试对其重新排序,有时它会尝试放入自己的子列表中,导致错误并消失。在拖动开始之前,我可以通过添加一个句柄并在句柄单击时隐藏子列表(使其尺寸更小,从而解决问题)来解决这个问题,但是其他人可以想办法解决这个问题吗?
似乎问题在于拖动高度较大的项目。
浏览器:
这一切都在 Firefox 中。 IE 似乎根本无法处理嵌套的 sortables。似乎没有办法从子列表中获取项目。
谢谢!
【问题讨论】:
标签: jquery jquery-ui jquery-ui-sortable