我已经在 STACKOVERFLOW 和其他论坛中搜索了我的问题的解决方案 - 如果我错过了可行的解决方案,请指出它。
我的问题:
每当在可排序列表中拖动元素(Portlet div)时,我需要在实际拖动过程开始之前执行一些操作(根据我在 START 事件触发之前的理解)。
更具体:
我的 DIV 为用户提供了扩展/折叠其主体的可能性(就像 jquery UI 页面上的示例所示)http://jqueryui.com/demos/sortable/#portlets http://jqueryui.com/demos/sortable/#portlets).
每当拖动一个元素时,我想触发我的折叠方法,以便唯一被拖动的视觉元素是折叠的 DIV。
但是每当我调用我的方法时(类似这样)
$someitem.trigger("toggle.somenamespace")
它按预期工作,除了在可排序中触发开始事件之前计算拖动的助手的高度,因此助手具有处于未折叠状态的原始元素的高度。
我对此的最初想法是:因为可排序具有例如在实际拖动过程开始之前测量拖动距离的可能性(使用选项:distance)应该可以挂钩到这个流程,例如存储原始数据开始拖动临时变量中可排序小部件的函数(或任何名称),使用自定义回调覆盖它,该回调首先触发我的折叠功能,然后调用原始函数以确保正确计算高度。
然而,到目前为止,我的这种方法并没有取得太大的成功......
请注意,在拖动处理程序或可排序事件上设置 CSS 属性不会达到预期的效果,因为为帮助器计算的可排序小部件的高度被设置为元素属性。
或者 - 可能有人知道更好的方法来影响拖动过程中显示的助手的高度,这只是我的观点,我原来的方法(在拖动过程之前更改元素,然后让小部件以这种方式进行计算这是有意的)将是一个更好的解决方案......
感谢您的任何帮助,
马蒂亚斯
编辑:
将可排序标志:forceHelperSize 设置为 true 并在启动拖动处理程序中设置 ui.item / helper 大小也不起作用,因为它会在视觉上产生所需的效果(仅拖动折叠的项目,但阻止元素被向下拖动)一直(就好像该项目仍然具有未折叠状态下的高度)
使用助手进行测试:“原始”和“克隆”