我使用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>
答案 0 :(得分:4)
我认为你需要通过在将它添加到DOM后调用droppable()来使你新添加的元素可以删除。如果你添加这样的东西:
$(this).find('#ontheflyDiv').droppable( { ... });
到drop函数的底部它应该可以工作。我不知道为页面加载后添加的元素添加droppable功能的方法类似于jquery的live()函数可以对click和其他事件执行的操作。