我正在使用:
的jquery-1.6.2 jQuery的用户界面,16年8月1日 碰撞1.0.1
...构建基于Web的块绘画应用程序。我有一个表格网格,有可选择的单元格。在该层之上是' marquees'。当移动选框或调整大小时,我希望下表中的重叠单元格应用特殊类,因此我开始使用碰撞1.0.1。
它似乎具有完全所需的效果,但是当您拖动选框并然后调整它时 - 下面的单元格不再反映上面选取框的碰撞,直到您再次拖动选取框。如果您创建一个新的选取框并仅调整其大小,则会准确计算碰撞,但只有在拖动后才会出错。
在 http://accessibledesign.net/block_painter/client/ 上有一个演示(只需在屏幕上拖动一个选框)
黄色的细胞反射与上面的选框碰撞。
我已经做了大量的测试,并且可以确认可调整大小的marquees本身具有所有正确的属性,错误似乎在于碰撞功能:
$("#grid td.ui-selected").removeClass("ui-selected");
hits = DATA.elems.curMarquee.collision($("#grid td.col"))
hits.addClass("ui-selected");
此代码在' stop'可调整大小或可拖动 - 并在正确的时间触发。
答案 0 :(得分:2)
实际上,这是jquery-ui-draggable-collision
模块中的错误。或者更具体地说,它还没有设计用于处理“可调整大小” - 这将是未来的版本。如果您不需要可拖动的冲突内容,删除它应该可以解决问题。
但是,如果确实需要它,现在有一个解决方法。在致电$("#target").collision(".obstacles")
之前,请执行:
$("#target").removeData("jqueryCollisionCoordinates")
$("#target").removeData("jqueryUiDraggableCollisionRecentPosition")
$(".obstacles").removeData("jqueryCollisionCoordinates")
$(".obstacles").removeData("jqueryUiDraggableCollisionRecentPosition")
这将删除它所做的所有内部缓存,以便从头开始重新计算冲突,而不是使用尚未更新的先前版本。
注意:如果您也可以在sourceforge page上提交错误修复故障单,并且链接到此页面,我最终会将其修补为正常工作,当我发送时您会收到消息做。您也可以将您的网站添加到评论中,我会在进行更改时尝试记住用户的使用情况。谢谢!
另请注意:也许不应该说,但不要依赖于1.0.1之后的工作。也不要使用这些内部的内容,或者在将来的版本中可能会破坏 - 它不是公共API。