Jquery UI Draggable从窗口外部恢复

时间:2012-04-13 21:28:26

标签: javascript jquery jquery-ui

Probabely这是一个非常简单的问题,但我是Jquery的初学者......

我有以下脚本:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.js">/script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.js">

    </script>

    <script>
         $(function() {

            $('li').draggable({
                containment: 'document',
                revert: true
            });


            $("#config").droppable({
                drop: function(event, ui) {
                $(ui.draggable).appendTo( "#schub" );
                }
            });

        });


    </script>

这就是我的身体所包含的内容:

    <div style="width:1800px; height:600px; background-color:#efefef;padding:10px;" >
    <div style="float:left; width:1250px; height:580px; border:1px solid grey; padding:10px;" >
        <div id="config" style="background-color:blue; border:1px solid black; width:700px; height:500px;">

            <ul id="schub" style="width:300px;  height:500px;"></ul>

        </div>
    </div>

<div style=" background-color:red;float:left; width:490px; height:580px; border:1px solid grey; margin-left:10px;padding:10px;" id="menu">
    <ul class="category">

        <li  class="dragg"  style="background-color:#e6e6e6; border:1px solid black; width:150px; height:98px;">
        </li>

        <li class="dragg" style="background-color:#e6e6e6; border:1px solid black; width:150px; height:98px;">
        </li>

        <li  class="dragg"  style="background-color:#e6e6e6; border:1px solid black; width:150px; height:98px;">
        </li>

    </ul>

</div>

现在我的问题:我希望能够将红色<li>中的灰色<div>拖动到蓝色<div>。它实际上有效但灰色<li>总是从窗口外部恢复为蓝色<div>当我放下它们时。为什么会这样?我的<li>从我放弃的地方恢复了吗?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我想我找到了解决方案:

问题是,<li>会附加到蓝色div中的新<ul>,并附加ge之前的css样式。

<li>放入新的<ul id="schub">后,它仍然是来自Jquery的css,左边是:-1000px; (这是因为我们将<li>从右向左拖动)。然后它被附加到新的ul。 浏览器认为<li>是左侧<ul id="schub">的en元素:-1000px;这是在窗外。定义还原:true;已设置在<li>上,因此它会从窗口外部恢复为<ul id="schub">

我实际上没有找到解决方案,而是一种解决方法:

我们可以将定义助手:'clone'添加到<li>。就像我们得到了原始的克隆。它实际上没有从我们删除它的点回复,但是它被附加到新的<ul>而没有从窗口外部恢复。