我遇到的问题dragleave
是当悬停该元素的子元素时会触发该元素的事件。此外,dragenter
再次悬停父元素时不会触发。
我做了一个简化的小提琴: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>
使用以下 JavaScript:
$('#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");
}
});
它应该做的是通过div
在拖动某些东西时将放置点设置为红色来通知用户。这是有效的,但如果你拖入p
孩子,dragleave
被解雇并且div
不再是红色的。回到水滴div
也不会让它再次变红。有必要完全移出水滴div
并再次拖回水滴以使其变为红色。
dragleave
拖入子元素时是否可以防止触发?
2017 年更新: TL;DR,pointer-events: none;
按照下面@HD 的回答中的描述查找 CSS ,它适用于现代浏览器和 IE11。