【问题标题】:jQuery Draggable and overflow issue [closed]jQuery 可拖动和溢出问题 [关闭]
【发布时间】:2010-10-23 02:24:57
【问题描述】:

当我从设置为溢出的容器 div 中拖动一个 div 时,我产生了不希望的效果:滚动。

我找到了其他人遇到问题但我无法找到解决方案的示例

Example on Paste bin

发生的情况是滚动只是增加了,如果您想拖动到可滚动 div 内的目的地但我希望能够将其从滚动控制中取出,我可以明白为什么这将是理想的行为。

【问题讨论】:

标签: jquery-ui drag-and-drop


【解决方案1】:

在两个溢出自动 div 之间进行拖动时,我遇到了类似的问题。在前面的答案的帮助下,我发现这种组合对我有用(Safari 5.0.3、jquery-1.4.4、jquery-ui-1.8.7):

appendTo: 'body',
containment: 'window',
scroll: false,
helper: 'clone'

【讨论】:

  • 对我来说甚至只是帮手:“克隆”单独解决了问题
  • 帮手也为我工作的年份(单独)
  • @max4ever,如果我只包含 helper:clone,它就可以工作,其他的一个搞砸了!感谢您的评论。
  • 非常感谢,你拯救了我的一天
  • 2015 年,这个答案仍然令人震惊!
【解决方案2】:

追加到

元素,SelectorDefault:'parent'

通过 appendTo 选项传递或选择的元素将在拖动过程中用作可拖动助手的容器。默认情况下,辅助对象与可拖动对象附加到同一容器中。

代码示例 使用指定的 appendTo 选项初始化可拖动对象。

$('.selector').draggable({ appendTo: 'body' });

【讨论】:

  • 是的,我在这个问题上完全失败了。我玩了一个小时。我能得到的最好的就是我离开它的方式,可拖动不适用于溢出:(
  • 别担心,感谢您的努力! :)
  • +1 这实际上对我有用。
  • @EvoD -- 本地能手很可能只是在这里获取他的信息。
  • 这里的本地能手,我可以确认我的所有信息都是从 StackOverflow 获得的。
【解决方案3】:

一定要注意文档

http://docs.jquery.com/UI/Draggable#option-scroll

滚动

类型:布尔值
默认值: true
如果设置为true,容器在拖动时自动滚动。

所有进入这里的人,从我的错误中吸取教训,RT(F)M!!!

【讨论】:

  • 确实浪费了 2 个小时。我们真的应该 RTFM
  • 手风琴也有类似的问题。我在手风琴面板中有一个可拖动的对象,想将它拖到手风琴外面,但是手风琴面板的“溢出”设置为“自动”,我从来没有设法离开手风琴。在手风琴上设置“滚动:假”没有帮助。最后我否决了 jquery-ui 中设置的溢出。这让我的内容面板的高度看起来很奇怪,所以我必须给定高度。这很有效。
【解决方案4】:

它的克隆解决方案有效,但有两个问题。

首先:克隆被附加到正文中。根据您的 css,您的元素可以更改样式,因为在它开始之前,它位于另一个元素内部,并且在拖动过程中,它将直接位于 body 元素上。

第二:有时元素必须移动,然后克隆让对象在那里。

所以,这个问题的解决方案是:

$('.selector').draggable({
    helper: 'clone',
    start: function(){
        $(this).hide();             
    },
    stop: function(){
        $(this).show()
    }
});

【讨论】:

  • 完美!并感谢有关 css 的提示 - 帮助我解决了这两个问题。
  • 要真正模仿 Draggable 的“原始”行为,您最好使用 CSS 属性“visibility”
【解决方案5】:

设置滚动选项不会阻止子项隐藏在溢出区域中。我想出了一个使用 helper 选项的工作循环。看看吧:

http://pastebin.me/164f0a4073496563fe3179ddcec5fd6d

这里还引用了我发的另一篇文章:

jquery ui draggable elements not 'draggable' outside of scrolling div

【讨论】:

    【解决方案6】:

    您还可以指定不想包含哪些类型的元素。

    <div class="draggable"> 
        <h2>This will drag the div</h2>
        <ul>
           <li>This won't drag the div</li>
        </ul>
    </div>
    

    应用此取消属性以忽略指定子元素中的事件

    $('.draggable').draggable({cancel : 'ul'});
    

    【讨论】:

      猜你喜欢
      • 2012-05-06
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      相关资源
      最近更新 更多