以下に示すように、ドラッグ可能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
の 内のネストされた子要素であり、したがってコールバックが常に起動される場合に発生します。この場合、コールバックでの色を変更しているため、望ましくない点滅が発生します。div
li
div.group
div.group
イベントを委任し、div
祖父母のみがli
イベントを処理できるようにする方法はありますか? または、これを回避する他の方法はありますか?
編集:これを行う方法があるかどうかを知りたいのですが、現在、私はここで見つけた回避策を使用しています。