javascript - 您能通过将项目拖动到嵌套可排序项中来解释这种奇怪的行为吗?

标签 javascript jquery jquery-ui drag-and-drop jquery-ui-sortable

我有以下设置:

  • 可排序列表,其中 <li> 之一有一个表格,每个单元格中都有列表。
  • 所有列表都可以相互排序。
  • 可以添加到任何可排序项的可拖动项

问题:将可拖动项(“拖动 1”、“拖动 2”、“拖动 3”)添加到水平列表(列表列表)中的列表之一时,在放置时会复制可拖动项。有时,它会在同一列表中创建两个副本,或者在项目列表中创建一个副本,在列列表中创建一个副本。

这是一个演示:http://jsfiddle.net/MQTgA/

问题:如何防止在拖放可拖动对象时创建第二个项目?

更新:通过将水平列表的类名称更改为其他名称(“hlist”)并从“connectToSortable”选项(“ul.hlist”)中省略新的类名称,它不再删除两个副本,并且仍然允许将该项目删除到任何列表中。这似乎不对。此外,当尝试将项目放入水平列表而不是主列表时,它似乎也非常敏感(不会带来良好的用户体验)。想法?

更新的演示:http://jsfiddle.net/MQTgA/3/

最佳答案

这样做是因为您的顶级无序列表(包含项目 1 - X 的列表)与表无序列表具有相同的类。如果将顶层更改为不同的类名,它应该停止双击可拖动对象。我希望我正确理解你的问题,这是我的改变。 New code


编辑:实际上这也没有帮助,因为那样你将无法进入你的上层列表。我认为问题在于,当您拖放时,jquery 不知道您实际上想要放入哪个 ul 中。您可以尝试将所有元素放大一点,这样用户就不必巧妙地将可拖动元素放到正确的位置。

关于javascript - 您能通过将项目拖动到嵌套可排序项中来解释这种奇怪的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4596527/

相关文章:

Javascript 在单击按钮时动态替换 div 内容

javascript - SignalR 连接到多个服务器

javascript - 在输入和输出中添加逗号

javascript - 无法检查输入是否有值(value)

javascript - 可排序的 jQuery UI div 与它们之间的间距对齐

javascript - 不可变的 JS OrderedMap : Insert a new entry after a given Key

javascript - 阻止 JavaScript 执行

jquery - 为什么 jQuery 鼠标悬停不起作用?

jQueryUI 选项卡 : stop rotating while hover

jQuery 可排序 : style table same as list