e.target is what triggers the event dispatcher to trigger and e.currentTarget is what you assigned your listener to.javascript
举个例子:css
<!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> #container { height: 200px; width: 100px; background-color: #333; } </style> </head> <body> <div id="container"> <button id="btn">button</button> </div> <script type="text/javascript"> function handle(e){ console.log('e.currentTarget: ' + e.currentTarget.tagName); console.log('e.target: ' + e.target.tagName); console.log('this:' + this.tagName); } var div = document.getElementById('container'); div.addEventListener('click', handle, false); </script> </body> </html>
事件是绑定到div上的,点击div中的按钮时:html
点击div中按钮以外的区域时:java
因为是在div
上绑定的点击事件,因此handle中的this和e.currentTarget都指向div,而target指向鼠标点击的那个元素。this