每个孩子都会触发jQuery dragenter事件

hsz*_*hsz 5 jquery dragenter

dragenter在包含一些孩子的对象上绑定了事件.

$(document).on('dragenter', '#container', function(e) {
  console.log('dragenter');
});
Run Code Online (Sandbox Code Playgroud)

当我使用拖动文件移动时,此事件会反复触发.我所期望的dragenter只是在进入#container元素时才开火,而不是每个孩子.

这是正确的行为吗?我该怎样预防呢?

Fel*_*ing 12

您可以测试触发事件的元素是否为容器:

var container = $('#container').get(0);

$(document).on('dragenter', '#container', function(event) {
  if(event.target === container) {
      console.log('dragenter');
  }
});
Run Code Online (Sandbox Code Playgroud)

或者,如果您不必使用事件委派:

$('#container').on('dragenter', function(event) {
    if(event.target === this) {
        console.log('dragenter');
    }  
});
Run Code Online (Sandbox Code Playgroud)