javascript之事件委托

事件处理程序太多的话,一般做法是使用事件委托,这有利于减少内存开销。

原理是利用了事件冒泡。

Javascript 的事件沿着DOM树从监听节点下滑到触发节点,然后再上爬回监听节点。也就是说,如果你监听了一个DOM节点,那也就等于你监听了其所有的后代节点,可以利用target.tagName target.id target.className判断是否是该元素,然后执行事件即可。

<ul id="resources">
  <li><a href="http://developer.mozilla.org">MDN</a></li>
  <li><a href="http://html5doctor.com">HTML5 Doctor</a></li>
  <li><a href="http://html5rocks.com">HTML5 Rocks</a></li>
  <li><a href="http://beta.theexpressiveweb.com/">Expressive Web</a></li>
  <li><a href="http://creativeJS.com/">CreativeJS</a></li>
</ul>

var resources = document.querySelector('#resources'),
log = document.querySelector('#log');
resources.addEventListener('mouseover', showtarget, false);
function showtarget(ev) { 
var target = ev.target; 
if (target.tagName === 'A') {
 log.innerHTML = 'A link, with the href:' + target.href; 
}
if (target.tagName === 'LI') {
 log.innerHTML = 'A list item'; 
} 
if (target.tagName === 'UL') { 
log.innerHTML = 'The list itself'; 
}
}

参考:javascript 有没有更高效的事件绑定写法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容