Yaşadığım sorun dragleave, bir öğenin alt öğesini gezdirirken bir öğenin olayının başlatılmasıdır . Ayrıca, dragenterana 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 divartık kırmızı olmaz. Damlaya geri dönmek divde onu tekrar kırmızı yapmaz. Damladan tamamen çıkmak divve kırmızı yapmak için tekrar içine sürüklemek gerekir.
dragleaveBir 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.
dragleavebu durumda hala ateşlendiği için alt öğeye girerken veya ayrılırken bir flaş vardır .