18

我正在使用 JQuery 的 draggable(); 使 li 元素可拖动。唯一的问题是当元素被拖到其父元素之外时,它不会显示出来。也就是说,它不会离开其父 div 的范围。一个例子在这里:http: //imgur.com/N2N1L.png - 好像其他所有东西的z-index都具有更高的优先级(并且元素在所有东西下滑动)。

这是代码:

$('.photoList li').draggable({ 
        distance: 20,
        snap: theVoteBar,
        revert: true,
        containment: 'document'
    });

li 元素被放置在 DIV 中,如下所示:

<div class="coda-slider preload" id="coda-slider-1">
    <div class="panel">
        <div class="panel-wrapper">
            <h2 class="title" style="display:none;">Page 1</h2>
            <ul class="photoList">
                <li>
                    <img class="ui-widget-content" src="photos/1.jpg" style="width:100px;height:100px;" />
                </li>
            </ul>
        </div>
    </div>

我很肯定问题是它不会离开它的父容器,但我不知道该怎么做才能把它拿出来。

任何方向或帮助将不胜感激!

4

5 回答 5

21

我以完全相同的问题登陆此页面,布伦丹的回答让我很接近。设置该appendTo选项没有帮助,但我能够通过添加overflow: visible到我的可拖动元素的父级来解决我的问题。原来我马虎地继承了隐藏在链条上的某个地方。

旁注,看起来这很有效,因为 jQuery UI 通过动态设置相对于父级的定位来移动可拖动元素 - 这对我来说是新的英特尔!

于 2011-06-01T16:19:11.157 回答
12

我也有同样的问题。
您可以使用此选项

遏制:$('#divmain')
助手:'克隆'

分别用于
- 定义放置动作的限制区域
- 用于显示可见的拖动对象也在 div 父级之外但在 #divmain 内

例子

<div id="divmain">
  <div id="divparentdraggable">
    <div id="divdraggable"></div>
  </div>
  <div id="divparentdroppable">
    <div id="divdroppable"></div>
  </div>
</div>

jQuery代码:

$('divparentdraggable').draggable({ 
...
containment: $('#divmain'),
helper: 'clone',
...
});

我希望这对某人有所帮助。

于 2013-01-31T19:47:22.897 回答
11

看起来上面的一些组合为我做了。

设置appendTo: 'body'helper: 'clone'。这样,将创建一个新的 DOM-Object 作为 body 的子对象,该对象在任何地方都可见。这样您就可以将它拖放到您喜欢的任何地方。

于 2014-09-26T12:54:10.623 回答
3

这看起来像一个CSS问题。尝试关闭还原,以便在将其拖动到一半可见的位置时保持原位。然后在 Firebug 中使用 z-index 等,看看是否可以显示。这可能是父 ul 或 div 之一的 CSS 问题,带有“溢出:隐藏”。

于 2010-04-17T13:40:09.887 回答
2

我有一个类似的问题并通过设置选项解决了它:

appendTo: 'body'

唯一的副作用是,如果您根据其父容器将样式应用于项目,则这些样式将不会出现在帮助程序上。

于 2011-02-15T15:54:11.273 回答