子元素中的拖放工作很奇怪

时间:2013-03-22 07:30:14

标签: jquery html5

我构建了一个这样的拖放系统: 这是一个可以放入可编辑Div的列表: 列表代码如下:

<li class='file'>test<li>
$("li.file").bind("dragstart",function(e){
e.originalEvent.dataTransfer.effectAllow='move';
e.originalEvent.dataTransfer.setData('text',$(this).text());
});`    

然后我得到一个Div来获得拖动项目:

<div id='editor'><div>
$("#editor").bind('dragover',function(e){
e.originalEvent.dataTransfer.dropEffect="move";
if(e.preventDefault){
e.preventDefault();
});
$("#editor").bind('drop',function(e){
    if (e.target==$('#editor')[0]){
#add a sub <div class="editorcontent"> under the <div id='editor'>
}

这些代码工作正常。现在我想在上面添加一个新的拖放事件  &#39; div.editorcontent允许两个不同的editorcontent div切换它们的位置:

$("div.editorcontent").bind("dragstart",function(e){
e.originalEvent.dataTransfer.effectAllow='move';
});
$("div.editorcontent").bind("dragover",function(e){
e.originalEvent.dataTransfer.dropEffect="move";
if(e.preventDefault){
e.preventDefault();
}

});
$("div.editorcontent").bind("drop",function(e){
    alert(e.target);
});

但这些代码并不起作用。我在chrome上设置了断点,似乎只有#editor的拖放事件正在使用中。每当我拖动div.editorcontent时都不会发生任何事件。当我将div.editorcontent元素放在另一个div.editorcontent上时。 chrome进入了#编辑器的drop事件。那么我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

问题是当$ .ready新的add div不存在时,所以这些div的新处理程序不会绑定在这些div上。