在飞行中创建的Droppable div不起作用

时间:2011-08-16 11:44:41

标签: jquery jquery-ui jquery-plugins

我使用class来设置元素的可拖动和可放置属性(UL,LI或DIV)。因此,当我在设计时创建元素时,我可以按预期拖放。但是当我动态创建一个元素时(id ='ontheflyDiv'的div)不能作为droppable工作。

提前致谢。

<html xmlns="">
<head>
    <title></title>
    <link rel="stylesheet" href="/Styles/themes/base/jquery.ui.all.css">
    <script src="/Scripts/jquery-1.6.2.js"></script>
    <script src="/Scripts/ui/jquery.ui.core.js"></script>
    <script src="/Scripts/ui/jquery.ui.widget.js"></script>
    <script src="/Scripts/ui/jquery.ui.accordion.js"></script>
    <script src="/Scripts/ui/jquery.ui.mouse.js" type="text/javascript"></script>
    <script src="/Scripts/ui/jquery.ui.draggable.js" type="text/javascript"></script>
    <script src="/Scripts/ui/jquery.ui.droppable.js" type="text/javascript"></script>
    <link rel="stylesheet" href="/Styles/demos.css">
    <script>

        $(function () {

        //Draggable Items
            $(".myDragClass").draggable({
                helper: 'clone',
                appendTo: 'body'
            });
        //Droppable
            $(".myDropClass").droppable(
                {
                    drop: function (event, ui) {
                        //remove old item
                        $(this).find(".myDragClassPlaceHolder").remove();

                        var listHtml = "<li class='myDragClass' style='width: 200px;color:#000000;background-color:#00FF00;'>" +
                                        "<div id='ontheflyDiv' class='myDropClass' style='width:200px;height:100px;'>" +                                        
                                        "New Droppable area" + ui.draggable.text() + "</div></li>";

                        $(this).append(listHtml);
                    }
                });

       });
    </script>
</head>
<body>
    <div id="div3" class="demos-nav">
        <ul class="myDropClass">
            <li id="li7" class="myDragClassPlaceHolder">Drag and drop order here</li>
        </ul>
    </div>
    <BR />
    <div id="Div1" style="float: none; clear: both; font-size: 12px; height: 100px; overflow: scroll;">
        <table>
            <tr>
                <td><B><U>Order No</B></U></td>
            </tr>
            <tr>
                <td>
                    <div class="myDragClass">5000162255</div>
                </td>
            </tr>
            <tr>
                <td>
                    <div class="myDragClass">
                        5000162266</div>
                </td>
            </tr>
        </table>
    </div>
</body>
</html>

1 个答案:

答案 0 :(得分:4)

我认为你需要通过在将它添加到DOM后调用droppable()来使你新添加的元素可以删除。如果你添加这样的东西:

    $(this).find('#ontheflyDiv').droppable( { ... }); 

到drop函数的底部它应该可以工作。我不知道为页面加载后添加的元素添加droppable功能的方法类似于jquery的live()函数可以对click和其他事件执行的操作。