我有一个html表,其中每一行(<tr>
)代表一组客户端计算机。可以展开每一行以显示属于该组的客户。包含客户端的<tr>
始终生成但隐藏,并在单击每行开头的加号按钮时显示。
只要此组已经展开,就可以将客户端本身(它们是<div>
)拖放到另一个组中。到目前为止一切正常。
我现在想要实现的是客户端可以被拖动到折叠组,并且在一小时左右悬停组后,它将被扩展,客户端可以被丢弃到该组的其他客户端。
我使用in
的{{1}}和out
事件对悬停进行了编程,并且它可以扩展群组,但是(现在它开始难以用文字解释; )droppable(客户端)的行为仍然好像出现的表行不在那里:droppable的droppable
in
和out
事件在旧位置被触发元素,新出现的drop
的{{1}} in
和out
事件永远不会被触发。
看起来JQuery在拖动开始时会记住元素的位置,大小等,如果在丢弃发生之前DOM发生了变化,这些值就不会更新......
有人可以确认此行为是正常的,还是可以由我自己的代码中的其他问题引起?任何解决方法?
(问题已经非常臃肿,所以我不包含任何代码,但如果需要,我很乐意上传它)
修改:我无法添加图片,因为我是新用户,但你可以在这里找到一个:http://img69.imageshack.us/img69/309/20100413190123.png
版本:JQuery是1.3.2,jquery-ui是1.7.2
答案 0 :(得分:2)
当拖动开始拖动时,它会计算可以接受它的所有可放置的位置。默认情况下,此后不会重新计算位置。有一个可拖动的选项可强制重新计算每个“拖动”事件:refreshPositions
,请参阅:http://jqueryui.com/demos/draggable/#option-refreshPositions
目前没有功能或回调只在需要时手动触发计算(在我的情况下:扩展组时),但它是注册的功能请求。
请参阅:http://groups.google.com/group/jquery-ui/browse_thread/thread/5a1fbb37ab8ef1a9?pli=1和http://dev.jqueryui.com/ticket/4911
仅在需要时手动重新计算的示例:http://forum.jquery.com/topic/how-to-make-draggable-execute-refreshpositions-not-on-every-mousemove-but-with-a-specific-callback和http://trycatchfail.com/blog/post/2010/01/15/Work-around-for-jQuery-UI-Draggable-refresh-limitation.aspx