在多个元素上绑定文档与绑定事件侦听器上的事件侦听器

时间:2013-06-02 16:19:57

标签: javascript performance javascript-events

这与我以前的Q有关,我有这段代码:http://jsfiddle.net/NQQL6/

我在dragstart附加dragenddocument的事件监听器。替代方案是:

var elements = document.querySelectorAll('a');

for(var i = 0; i < elements.length; i++){
  elements[i].addEventListener('dragstart', function(){
    ...
  })
}

那有什么不同吗?我应该这样走吗?

1 个答案:

答案 0 :(得分:1)

唯一的区别是拖动事件何时触发。当在元素上时,它仅在该元素上发生拖放时触发,其中当在页面上的任何位置拖放时触发它们的文档设置。

除非你做一些css技巧来显示拖放区域的位置,否则用户可能会试图放弃其他任何地方并且事件不会被触发。

这一切都取决于你需要发生什么。例如,当处理文件拖放时,我通常将侦听器放在文档上,就好像它只是在元素上,并且用户没有将文件拖到该元素上,浏览器只是决定显示文件导航用户离开页面(如果它是img,text,html等文件,否则它会尝试下载它。)