使用jQuery UI 1.8.2的可排序+嵌套列表

时间:2010-07-22 12:12:03

标签: jquery jquery-ui jquery-ui-sortable

这个问题已经过去了,但似乎没有人遇到过和我一样的问题。

当我做这样的事情时

$(function(){
    $('#unique-ul').sortable({items:'li'});
});

我希望它“正常工作”。总的来说,确实如此。我可以拖动任何< li>从任何列表到任何其他列表,以及该< li>的任何子列表被拖着它。

然而,在拖动时,似乎真的很困惑它应该放在哪里。这是一个使用1.8.0的例子;它显示相同的行为。

http://jsbin.com/ewuxi3/

我发现的所有其他回复让我相信jQuery UI支持这种行为;例如,这是针对嵌套的draggables注册的针对1.7的错误:http://dev.jqueryui.com/ticket/4333

我找不到其他有这个问题的人所以它暗示我做错了。有线索吗?

1 个答案:

答案 0 :(得分:77)

这是因为Sortable并不真正知道你是否高于嵌套的<li>或包含它的那个。{1}}。一种解决方案是使用这样的结构:

<ul>
  <li><div>Item 1</div>
    <ul>
      <li><div>Subitem 1</div></li>
      <li><div>Subitem 2</div></li>
    </ul>
  </li>
  <li><div>Item 2</div></li>
  <li><div>Item 3</div></li>
</ul>

并设置选项toleranceElement: '> div'。我不知道为什么它没有记录,但它在那里,它告诉Sortable在计算交叉点时只考虑<div>

如果您感兴趣,我最近developed a plugin使嵌套排序更容易,允许动态创建新的嵌套列表。