作者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