2013-03-22 38 views
0

我已经建立这样一个拖放系统: 这里是一个列表,可拖放到编辑的事业部: 清单代码是这样的:拖放工程奇怪

<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'> 
} 

这些代码工作fine.Now我想添加一个新的拖累,并在 “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中设置了断点,似乎只有#编辑器的拖放事件正在使用中。每当我拖动div.editorcontent时,都不会发生任何事件。当我将div.editorcontent元素放在其他div.editorcontent上时。 Chrome会进入#编辑器的drop事件。那么我该如何解决这个问题?

回答

0

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