【发布时间】:2010-08-13 19:39:09
【问题描述】:
我正在尝试将 JQuery UI sortable 与 droppable 结合起来,以创建多个页面来放置和排序内容。我在这里设置了一个带有独立演示的博客条目:
http://whit.info/blog/2009/06/06/jquery-ui-combining-sortable-with-droppable/
这是一个 jsFiddle:
请注意,您可以拖动以对框进行排序,甚至可以拖动到其他列中。您也可以单击页面按钮来切换页面。我的问题在于结合这两个功能:
通过使用 droppable,我允许用户将一个框拖到一个 page 按钮上,然后页面将切换,用户可以完成将其拖到新公开的页面。问题是当页面切换时,出现在拖动框下方的第一列没有触发 over 事件。您必须拖动到另一列,然后回到第一列才能显示占位符。
我不确定,但我认为我需要以某种方式清除事件,或者手动触发它们。问题似乎源于这样一个事实,即当它可见时,拖动的框在列上方。
你能帮助解决这个深奥的难题吗?
谢谢!
更新:
所以我一直在考虑可能的解决方法。 Michal 建议触发 refresh 方法,确实没有解决问题,但让我想到了事件问题。
似乎当您将鼠标移开然后再返回时,会触发正确的事件。也许如果我可以手动触发第一列的 mouseout 事件,重置将允许 mouseover 事件正确触发。
我试过了:
$(".column:first").trigger('mouseout');
但我认为这与 sortable 的 out 事件不同。或许我应该触发那个事件?
【问题讨论】:
-
+1 对“困境”一词的使用相当不错。每个人都称他/她的问题为“两难”,即使问题有三四个方面。
-
没有什么比四元问题更糟糕的了。 :)
-
将
$('.column').sortable('refresh');添加到droppable 的.over回调有帮助,但不一致。我不知道如何让可排序的项目一直出现在列的顶部。 -
仅供参考,这在 IE7 中根本不起作用
-
+1 表示问题,同时也表示将我介绍给jsfiddle。这是一个很好的沙盒,可以尝试新功能并与他人讨论,或者在寻求帮助时显示您的代码和结果。
标签: javascript jquery jquery-ui