当使用jqueryui的可排序插件时,有一个问题是,一旦你在开始拖动后将鼠标移动到放置位置,它就会记住它并将它放在那里,即使你在释放鼠标时没有任何东西。< / p>
有没有办法防止这种情况发生,以便拖动的portlet在释放鼠标时没有超过放置位置时会跳回原来的位置?
答案 0 :(得分:1)
我有一个工作来防止不适当的分配,我的代码更复杂,所以我把它剥夺了必要性。
使用OVER事件将悬停类添加到目标
over: function(event,ui){
$(this).addClass('hover');
}
使用OUT事件从目标
中删除悬停类out: function(event,ui){
$(this).addClass('hover');
}
如果目标没有悬停类,则在RECEIVE上取消排序。取消将列表返回到排序开始之前的状态
receive: function(event,ui){
if( !$(this).hasClass('hover')){
$(this).sortable('cancel');
}
}
这还有一个问题。在某个其他目标首先触发OVER事件之前,目标不会再次响应OVER事件。
列表A. 第1项 第2项
列表B
第3项
此序列显示如何清除假定目标
我仍在寻找绕过这最后一个问题的方法,因为它需要用户通过拖动进行额外的动作以使目标再次激活(假设他们想要将项目1从列表A拖到列表B但是过冲现在列表B不会在第二次触发MOVE,这意味着我无法将悬停类放在它上面以显示它是活动的丢弃点。
总之,可排序触发OUT,但仍会记住触发RECEIVE时掉落的目标,并且还会阻止