作者nightspirit (鞭策自己社清流夜灵)
看板Ajax
标题[问题] 注册Click事件的效能问题
时间Tue Mar 29 04:26:56 2011
最近写程式有点疑惑,如果针对连结去做Click事件的绑定,
那麽是用一个匿名function配Switch Case好,
还是分开绑定不同的匿名function比较好呢?
HTML
<a href="#" id="a" class="btn">按钮一</a>
<a href="#" id="b" class="btn">按钮二</a>
A作法
$(".btn").click(function(){
switch(this.id){
case 'a':
// do something
break;
case 'b':
// do something
break;
}
});
B作法
$("#a").click(function(){// do something});
$("#b").click(function(){// do something});
就效能/记忆体来说,不晓得那种写法会得到比较好的效果?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 64.166.83.198
1F:推 leeabc:B 03/29 15:06
请问B做法是因为维护比较容易写法比较简洁
还是效能上也比较好呢???
2F:推 B9:可以用 this:)我的经验是抓 id 会增加之後头痛的程度 囧rz 03/30 02:27
如果Switch里摆的是 this 那会得到的是dom物件
那麽case那边要如何分辨这是两个不同的连结呢?
3F:→ yeo1987:试着两个都绑定一样的function(){ alert(this.id); } 03/30 10:21
4F:→ yeo1987:= =|| 发现你上面就有这样做哩... 03/30 10:22
5F:推 leeabc:取ID是原生的js,取class并不是,所以就效能来说id是最有效率 03/30 11:01
6F:推 s25g5d4:除了IE6以外 取class都有原生的function... 03/30 18:56
7F:→ s25g5d4:不过这部份还是要看jQuery实作方式 我记得应该是直接用原 03/30 18:57
8F:→ s25g5d4:生function... 03/30 18:57
9F:推 leeabc:有getElementsByClassName! 刚看了jQuery也有使用这方式 03/30 19:14
10F:→ leeabc:受教了~这样的话 A B 两方式其实就差不多了 :) 03/30 19:15
11F:→ s25g5d4:不一定就是了...这东西要看实际测试 03/30 22:19
这样看下来好像没有一定的说法,看个人习惯就是了,
如果两者没有差很多的话,我想我会挑情况混着用吧。
※ 编辑: nightspirit 来自: 64.166.83.198 (03/31 00:48)
12F:推 kasimroll:像这种绑定区块里相同元素的事件可用delegate() 04/05 05:22
13F:→ kasimroll:delegate可以只绑定一个事件在多个同元素的tag上 04/05 05:23