【问题标题】:jQuery UI Sortable and Draggable issuesjQuery UI 可排序和可拖动问题
【发布时间】:2011-06-06 08:13:18
【问题描述】:

我有一个嵌套的 Sortable,它本身不能很好地工作,但我也添加了一个 Draggable,这会导致更多问题。

  • 在嵌套的 Sortables 之间对项目进行排序几乎是不可能的,试试吧 ;)
  • 将 Draggable 拖动到内部 Sortable 中还会向外部 Sortable 添加一个新项目

示例:JSFiddle

我想这在当前版本的 jQuery UI 中是不可能实现的。


编辑:see comment below

【问题讨论】:

  • 在 Windows 7 上的 Chrome 12 中对我来说似乎可以正常工作。
  • 无法测试 Chrome 12,因为我有 11,但在 Firefox 4、Opera 11 和 Internet Explorer 9 中似乎也失败了,在 Windows 7 上测试
  • 我不是不可能做到的,但我有点努力...等一下...
  • 它在 Firefox 4.0.1 中对我来说并没有“失败”,尽管我同意你的第一点,将容器 2 中的项目 1 移动到容器 2 的末尾会产生一种奇怪的效果,而且会令人讨厌精确定位项目的放置点。
  • 我已经设法解决了第二个问题,方法是仅向外部容器添加一个 Sortable 实例并将“items”选择器从“> .item”更改为“.item”。它仍然有点跳跃,但这可能与样式有关,因为我不是一个设计师,我会搜索修复并相应地更新我的帖子。示例:JSFiddle

标签: javascript jquery jquery-ui draggable jquery-ui-sortable


【解决方案1】:
<ul>
   <li>Item 1</li>
   <li>Item 2</li>
   <li>Item 3</li>
   <li>
       <ul> <li>Item 4</li> </ul>
   </li>
</ul>

$('ul').bind('mouseenter',function (){
   //$(this).parents('ul').sortable('destroy');//this line is optional... :)
   $(this).sortable({'items':'li'});
});
$('ul').bind('mouseleave',function (){
   $(this).sortable('destroy');
});

这可能行不通,因为我没有测试过,但你确实明白了我希望的想法:)

【讨论】:

  • 这使得将项目从外部 Sortable 拖动到内部 Sortable 中的跳跃更少,但它破坏了将项目从内部 Sortable 移动到外部的能力,它也破坏了从可拖动到可排序中,但感谢您尝试帮助我
  • 一个提示,你应该使用 ul,li 组合,因为它更易于管理,并且 sortable 可以更好地处理它们:)
  • 对 div 元素进行排序应该没有任何问题,因为如果添加“display: list-item;”,它的行为就像列表项一样。我不能使用 ul > li 组合,因为我需要一个更复杂的容器,其中并非所有项目都具有相同的父项,如果你明白我的意思的话。
  • @melvin 哦,是的,我知道你的意思,那么你应该使用拖放功能,其中 droppable 有一个 accept 以便可以将其拖放到任何你想要的地方:) 然后 @987654323 @, 以 sortable 结尾并无缝销毁 sortable,因此您可以通过 ajax 保存列表 :)
猜你喜欢
  • 2014-07-02
  • 1970-01-01
  • 2011-12-11
  • 2012-06-23
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多