我在包含一些子对象的对象上绑定(bind)了dragenter事件。

$(document).on('dragenter', '#container', function(e) {
  console.log('dragenter');
});

当我在周围拖动文件时,此事件反复触发。我所期望的是仅在输入dragenter元素时才触发#container,而不是每个 child 也都触发。

这是适当的行为吗?我该如何预防?

最佳答案

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

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

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

或者,如果您不必使用事件委托(delegate):
$('#container').on('dragenter', function(event) {
    if(event.target === this) {
        console.log('dragenter');
    }
});

关于每个 child 都会触发jQuery dragenter事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10297476/

10-09 07:48