以下に示すように、ドラッグ可能liな要素が aulにネストされ、次に a にネストされていdivます。
<div class='group'>
<div class='header'>
// some stuff here
</div>
<ul>
<li draggable='true'>
Stuff I want to drag and drop to another div.group
</li>
</ul>
</div>
これらのdiv要素は複数あり、ドラッグ アンド ドロップ機能を実装して、あるグループのli要素divを別のグループに移動しようとしています。
ondragenterここに,コールバックを接続しましたondragleave:
// controller using mithril.js
ctrl.onDragLeave = function () {
return function (event) {
var target;
// Using isDropzone to recursively search for the appropriate div.group
// parent element, as event.target is always the children inside it
if ((target = isDropzone(event.target)) != null) {
target.style.background = "";
}
}
};
ctrl.onDragEnter = function () {
return function (event) {
var target;
if ((target = isDropzone(event.target)) != null) {
target.style.background = "purple";
}
};
};
function isDropzone(elem){
if(elem == null){
return null;
}
return elem.className == 'group' ? elem: isDropzone(elem.parentNode)
}
問題は、コールバックの が常になどevent.targetの 内のネストされた子要素であり、したがってコールバックが常に起動される場合に発生します。この場合、コールバックでの色を変更しているため、望ましくない点滅が発生します。divlidiv.groupdiv.group
イベントを委任し、div祖父母のみがliイベントを処理できるようにする方法はありますか? または、これを回避する他の方法はありますか?
編集:これを行う方法があるかどうかを知りたいのですが、現在、私はここで見つけた回避策を使用しています。