拖动时触发:hover选择器

Zen*_*noo 10 css drag-and-drop draggable hover

我目前正在开发的拖放系统存在一个问题。

:hover在div上有一种样式,用户可以在上面放置一些东西。当我只是将鼠标悬停在它上面时,它就起作用了,但是当我拖动一个元素时,它就没有作用。

有没有变通办法即使在拖动时也能显示该样式?

$(document).on('dragstart','#draggable',function(e){
  e.originalEvent.dataTransfer.setData("data",$(this).attr('data-text'));
});

$(document).on('drop','#droppable',function(e){
	console.log(e.originalEvent.dataTransfer.getData("data"));
});

$(document).on('dragover','#droppable',function(e){
  e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
div{
  display: inline-block;
  width: 100px;
  height: 100px;
  text-align: center;
  line-height: 100px;
  font-family: Arial
}
    
#droppable{
  border: 2px solid green;
}

#droppable:hover{
  background-color: rgba(0,0,0,0.2);
}
    
#draggable{
  border: 2px solid blue;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="droppable">Hover me !</div>
<div id="draggable" draggable="true" data-text="I exist too ! :(">Drag me !</div>
Run Code Online (Sandbox Code Playgroud)

Zen*_*noo 7

嘿,我终于找到了我想要的事件,之前找不到了:

.on('dragover') // Triggers when you enter your element

.on('dragleave') // Triggers when you leave your element
Run Code Online (Sandbox Code Playgroud)

演示:

.on('dragover') // Triggers when you enter your element

.on('dragleave') // Triggers when you leave your element
Run Code Online (Sandbox Code Playgroud)
$(document).on('dragstart','#draggable',function(e){
  e.originalEvent.dataTransfer.setData("data",$(this).attr('data-text'));
});

$(document).on('drop','#droppable',function(e){
	console.log(e.originalEvent.dataTransfer.getData("data"));
  $(this).removeClass('hover');
});

$(document).on('dragover','#droppable',function(e){
  e.preventDefault();
  $(this).addClass('hover');
});

$(document).on('dragleave','#droppable',function(e){
  $(this).removeClass('hover');
});
Run Code Online (Sandbox Code Playgroud)
div{
  display: inline-block;
  width: 100px;
  height: 100px;
  text-align: center;
  line-height: 100px;
  font-family: Arial
}
    
#droppable{
  border: 2px solid green;
}

#droppable:hover,#droppable.hover{
  background-color: rgba(0,0,0,0.2);
}
    
#draggable{
  border: 2px solid blue;
}
Run Code Online (Sandbox Code Playgroud)