[問題] 註冊Click事件的效能問題

看板Ajax作者 (鞭策自己社清流夜靈)時間14年前 (2011/03/29 04:27), 編輯推噓6(608)
留言14則, 5人參與, 最新討論串1/3 (看更多)
最近寫程式有點疑惑,如果針對連結去做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

03/29 15:06, , 1F
B
03/29 15:06, 1F
請問B做法是因為維護比較容易寫法比較簡潔 還是效能上也比較好呢???

03/30 02:27, , 2F
可以用 this:)我的經驗是抓 id 會增加之後頭痛的程度 囧rz
03/30 02:27, 2F
如果Switch裡擺的是 this 那會得到的是dom物件 那麼case那邊要如何分辨這是兩個不同的連結呢?

03/30 10:21, , 3F
試著兩個都綁定一樣的function(){ alert(this.id); }
03/30 10:21, 3F

03/30 10:22, , 4F
= =|| 發現你上面就有這樣做哩...
03/30 10:22, 4F

03/30 11:01, , 5F
取ID是原生的js,取class並不是,所以就效能來說id是最有效率
03/30 11:01, 5F

03/30 18:56, , 6F
除了IE6以外 取class都有原生的function...
03/30 18:56, 6F

03/30 18:57, , 7F
不過這部份還是要看jQuery實作方式 我記得應該是直接用原
03/30 18:57, 7F

03/30 18:57, , 8F
生function...
03/30 18:57, 8F

03/30 19:14, , 9F
有getElementsByClassName! 剛看了jQuery也有使用這方式
03/30 19:14, 9F

03/30 19:15, , 10F
受教了~這樣的話 A B 兩方式其實就差不多了 :)
03/30 19:15, 10F

03/30 22:19, , 11F
不一定就是了...這東西要看實際測試
03/30 22:19, 11F
這樣看下來好像沒有一定的說法,看個人習慣就是了, 如果兩者沒有差很多的話,我想我會挑情況混著用吧。 ※ 編輯: nightspirit 來自: 64.166.83.198 (03/31 00:48)

04/05 05:22, , 12F
像這種綁定區塊裡相同元素的事件可用delegate()
04/05 05:22, 12F

04/05 05:23, , 13F
delegate可以只綁定一個事件在多個同元素的tag上
04/05 05:23, 13F

04/05 05:24, , 14F
可以節省記憶體 http://api.jquery.com/delegate/
04/05 05:24, 14F
文章代碼(AID): #1DaEyL07 (Ajax)
文章代碼(AID): #1DaEyL07 (Ajax)