Yaşadığım sorun dragleave
, bir öğenin alt öğesini gezdirirken bir öğenin olayının başlatılmasıdır . Ayrıca, dragenter
ana eleman tekrar geri getirildiğinde tetiklenmez.
Basitleştirilmiş bir keman yaptım: http://jsfiddle.net/pimvdb/HU6Mk/1/ .
HTML:
<div id="drag" draggable="true">drag me</div>
<hr>
<div id="drop">
drop here
<p>child</p>
parent
</div>
aşağıdaki JavaScript ile:
$('#drop').bind({
dragenter: function() {
$(this).addClass('red');
},
dragleave: function() {
$(this).removeClass('red');
}
});
$('#drag').bind({
dragstart: function(e) {
e.allowedEffect = "copy";
e.setData("text/plain", "test");
}
});
Yapması gereken div
şey, orada bir şey sürüklerken damlayı kırmızı yaparak kullanıcıya bildirmektir . Bu işe yarar, ancak p
çocuğa sürüklerseniz dragleave
, işten çıkarılır ve div
artık kırmızı olmaz. Damlaya geri dönmek div
de onu tekrar kırmızı yapmaz. Damladan tamamen çıkmak div
ve kırmızı yapmak için tekrar içine sürüklemek gerekir.
dragleave
Bir alt öğeye sürüklerken ateş etmeyi önlemek mümkün müdür ?
2017 Güncellemesi: TL; DR, CSS'yi pointer-events: none;
modern tarayıcılarda ve IE11'de çalışan @ HD'nin cevabında açıklandığı gibi arayın.
dragleave
bu durumda hala ateşlendiği için alt öğeye girerken veya ayrılırken bir flaş vardır .