【发布时间】:2016-01-04 08:49:06
【问题描述】:
我正在 Javascript 中尝试拖放操作。到目前为止它正在工作,但我在可拖动对象中的可编辑内容不再可用(因此不是它们通常的方式)
这是一个可放置对象的示例:
<div id="ziel_2" draggable="true" trvdroptarget="true">
<div> some text<br>some text</div>
<div contenteditable="true">some text</div>
</div>
如果我尝试使用 contenteditable div,则不应拖动整个对象,我想单击文本并对其进行编辑,或者只是选择其中的一些文本并像往常一样拖动它
所以问题是:如果 e.target.hasAttribute("contenteditable") 在 ondragstart 中,我如何取消拖动事件?
编辑:这是到目前为止的幕后代码:
function lieferungen_draggable_add_dragstart(obj)
{
obj.addEventListener('dragstart', function (e) {
if(e.target.hasAttribute("contenteditable")) { /* make something stop this thing */ }
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData('Text', this.getAttribute('id'));
return false;
});
return obj;
}
EDIT2:
contenteditableDiv.addEventListener('mousedown', function() { this.parentNode.setAttribute("draggable", false); });
contenteditableDiv.addEventListener('mouseup', function() { this.parentNode.setAttribute("draggable", true); });
根据https://stackoverflow.com/a/9339176/4232410 的想法,这对我有用
感谢您的帮助!
【问题讨论】:
-
您可以为 contenteditable 部分提供一个 id,然后在绑定可拖动事件时,排除该/那些 ID - 需要真正查看您的代码
-
添加了代码,但我不知道如何排除可拖动元素中的特定元素
-
刚刚发现stackoverflow.com/questions/6848140/… 似乎是一个类似的问题,但也没有结果;(
-
查看编辑,它有效;)
标签: javascript html