jQueryUI 可排序和可拖动目标不会水平滚动以进行放置,但会进行排序

Posted

技术标签:

【中文标题】jQueryUI 可排序和可拖动目标不会水平滚动以进行放置,但会进行排序【英文标题】:jQueryUI sortable and draggable target won't scroll horizontally for drop but will for sort 【发布时间】:2012-12-08 08:35:06 【问题描述】:

我有两个包含多个 div 并且可以滚动的 div。 我有一个垂直 div,它在包含的 div 上有可拖动的。 我的水平 div 是可排序的,我通过 connectToSortable 将可拖动对象连接到它。

水平排序可以在重新排列项目时水平滚动。 但是,如果我从垂直拖动到水平,它不会像我进行纯排序时那样滚动水平 div。

我已经阅读了此处的所有条目,用于使用 scrollTo 和衍生工具等插件滚动 div,但它们对我的特定问题没有帮助。我正在使用 jQuery 1.8.3 和 jQuery UI 1.9.2

我可以拖放到视口中,但我希望我的用户能够像在排序时那样拖动并让水平滚动工作。如果我放到可见区域然后排序,它将滚动 div。

谢谢!

$(".playboxresults, .playboxrecommended").draggable(
        revert: "invalid",
        opacity: 0.95,
        containment: 'document',
        connectToSortable: "#divCurrentList",
        helper: function () 
            $copy = $(this).clone();
            return $copy;
        ,
        appendTo: 'body',
        scroll: true,
        start: function (e, ui) 
            draggedItem = ui.item;
        
    );

【问题讨论】:

我们可以看看你的代码吗?你在使用 'appendTo: body' 吗? 我实际上是在使用 appendTo: body。我用代码更新了帖子。 re: appendTo: body - 我的放置目标是水平 div。这个 div 具有固定的定位,并且是液体布局的一部分,永远不会低于折叠。如果我记得在添加 appendTo 之前有很多问题,所以我 99% 确定我不能删除这个属性。 【参考方案1】:

这是因为当你使用 append to body 时,helper 成为 body 的一部分,因此不会滚动水平 div。

我也在实现这个功能,并通过sdespont找到了解决方法

helper: function()
     $('#horizontalDiv').append('<div id="clone">' + $(this).html() + '</div>');
     $("#clone").hide();
     setTimeout(function()
         $('#clone').appendTo('body');
         $("#clone").show();
     ,1);
     return $("#clone");
,

这首先使你的水平 div 的助手部分,然后将其附加到正文。

希望这会有所帮助。

您也可以参考this

【讨论】:

感谢您回到 Mandeep。稍后我将能够对此进行测试,并且一定会告诉您结果。再次感谢。 抱歉回复晚了。很忙。 我尝试了解决方案。它没有破坏放置行为,但也没有启用滚动。我的页面的代码很复杂,因此可能存在其他问题阻止滚动时拖动。我通过调整您提出的答案尝试了我能想到的一切,但不幸的是没有成功。还是谢谢! 如果你能把你的代码放在一个 jsfiddle 中,我可能会提供帮助 我很感激这个提议。我需要几天的时间才能尝试。我会尽量在星期天做,因为我可以使用很多帮助。谢谢!

以上是关于jQueryUI 可排序和可拖动目标不会水平滚动以进行放置,但会进行排序的主要内容,如果未能解决你的问题,请参考以下文章

可拖动+可排序和可滚动的 div

jquery UI可拖动:在容器内水平拖动溢出:滚动?

Jquery UI 结合了可排序和可拖动

jQuery-UI 可拖动和可排序

使用 jquery ui 可拖动,是不是可以有不同的滚动灵敏度垂直和水平?

禁用 jQueryUI 中嵌套可排序项的拖动冒泡