我已经搜索了STACKOVERFLOW和其他论坛以解决我的问题 - 如果我错过了一个有效的解决方案,请指出我 .
我的问题:每当在可排序列表中拖动一个元素(一个portlet div)时,我需要在实际拖动过程开始之前执行一些操作(从我在START事件被触发之前的理解) .
更具体一点:我的DIV为用户提供了扩展/折叠它的身体的可能性(就像在jquery UI页面http://jqueryui.com/demos/sortable/#portlets中的示例一样) .
每当拖动一个元素时我都想触发我的折叠方法,以便拖动的唯一可视元素是折叠的DIV .
无论何时我调用我的方法(类似这样)
$someitem.trigger("toggle.somenamespace")
它按预期工作,除了在sortable中触发start事件之前计算拖动帮助器的高度,因此帮助器具有处于未折叠状态的原始元素的高度 .
我最初的想法是:因为可分类的例如在实际拖动过程开始之前测量拖动距离的可能性(使用选项:距离)它应该可以挂钩到此流程中,例如将可排序窗口小部件的原始startDrag函数(或其任何名称)存储在临时var,使用自定义回调覆盖它,该回调首先触发我的折叠功能,然后调用原始函数以确保正确计算高度 . 但是 - 到目前为止,这种方法并没有取得多大成功......
请注意,在处理程序中为拖动或在可排序事件上设置CSS属性具有所需的效果,因为为帮助程序计算的可排序窗口小部件的高度设置为元素属性 .
或者 - 可能有人知道更好的方法来影响在拖动过程中显示的助手的高度,这只是我的观点,我的原始方法(在拖动过程之前更改元素,然后让小部件按照计算方式进行计算)它是有意的)将是一个更好的解决方案......
感谢任何帮助,马蒂亚斯
编辑:将可排序标志:forceHelperSize设置为true并在开始拖动器中设置ui.item /帮助器大小也不起作用,因为它可视地产生所需的效果(仅拖动折叠的项目,但停止元素一直拖下来(好像该项目仍然具有未折叠状态的高度)用帮助器测试:'原始'和'克隆'
2 回答
我已经搜索了很长时间来寻找这个“解决方案”:
你可以通过mousedown手柄触发一个事件并隐藏你想要的任何东西 . 然后在我的示例501中将sortable的选项延迟设置为大于隐藏动画持续时间的值 .
它不是一个优雅的解决方案,但它的工作原理 - 至少在我的程序中 .
你可以做到这一点,但对于即将推出的jQuery UI版本来说,它不是未来的证据: