If you have 10 buttons inside a p, attach only one event handler to
the p wrapper, instead of one handler for each button. Events bubble
up so you'll be able to catch the event and figure out which button it
originated from.如果在一个p中有10个按钮,与其在每个按钮上都放一个事件处理程序,不如只在p上放一个事件处理程序。事件会冒泡上溯,这样你就会捕获这一事件,并找出是哪个按钮发起的它。
我设定了如下场景如果使用jquery来写下,例如:
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
一个p中有10个按钮,在每个按钮上都放一个事件处理程序,那就是注册了10个事件处理程序。
在p上放一个事件处理程序,事件会冒泡上溯,这样你就会捕获这一事件,并找出是哪个按钮发起的它。这样只需要注册一个事件处理程序。
无论从资源占用还是从动态DOM更新的角度来说都是后者有利。
极端点,p中有10000个按钮,前者需要注册10000次,后者还是只需要1次。如果之后动态为p再增加10000个按钮,那前者还得再为新按钮注册10000次,后者啥都不用动。
玩玩的
http://jsfiddle.net/J7fLZ/
这是 DOM 里非常基础的一个概念,这里有一篇文章讲的比较形象和详细,你可以阅读一下:
http://www.cnblogs.com/hh54188/archive/2012/02/08/2343357.html
Event Delegation, 事件代理, Backbone 里经常这么干的, 原理前面的答案说了.
区分的步骤, 不是用
switch/case, 而是用 jQuery 选择器, jQuery 文档里找找细节.