【发布时间】:2014-06-10 22:28:28
【问题描述】:
我在 html5 中拖放时遇到了一个奇怪的问题。
面板 A 列出了您可以拖动的元素类型。面板 B 是拖动元素的位置。面板 C 和 D 是您可以拖动元素的其他地方,您可以在面板 B、C 和 D 之间拖动和重新排列元素。
我的问题是我可以将一个元素拖放到其中一个面板内的另一个元素的内部,我不希望用户能够这样做。这些面板的子元素没有附加任何类型的 javascript 或与拖动相关的属性,但它们目前允许在其中拖动元素。
我尝试附加“ondrop='return false;'”和“ondragover='return false;'”,但都没有成功。
肯定有办法关闭元素上的“允许拖入”属性吗?
这是我的代码:
<div id="elem-002" draggable="true" ondragstart="drag(event)">content</div>
主面板:
<div id="panel-b" ondrop="drop(event)" ondragover="allowDrop(event)">
<div id="elem-001" draggable="true" ondragstart="drag(event)">content</div>
</div>
JS:
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("Text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
换一种说法:我可以将我的“elem-002”直接拖到“elem-001”中,这是一个已经被拖入的元素。这会导致我不想发生的元素嵌套。我怎样才能防止这种情况发生?
【问题讨论】:
标签: javascript html drag-and-drop