作者fillano (冒牌费大公)
看板Ajax
标题Re: [讨论] 关於event handler
时间Tue Nov 25 15:03:46 2008
刚刚看了一下jquery的原始码。
jquery用了三层索引,把handler存放在$.cache里面。
jquery载入时会在那个匿名函数里面产生一个区域变数叫做expando,在element上面
操作时,会为element加入一个attribute,名称是expando的值,attribute的值是在
匿名函数里面递增的一个区域变数叫做uuid。另外$.event.guid是个由jquery维护的
索引,每加一个handler就会递增。
理论上,透过$.cache[elem[expando]]['event'][type][guid]就可以取得各个handler
,问题是这个expando封装在匿名函数里面,而且应该没有介面可以存取。
(上面的type可能是'click'....等)
--
Sapere Aude! 这就是启蒙运动的口号!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.95.16
※ 编辑: fillano 来自: 60.250.95.16 (11/25 15:09)
1F:→ TonyQ:嗯..我昨天想了一下也是朝handler下手. 11/25 15:37
2F:→ TonyQ:也很好奇 js core不知道有没有提供handler本身的调用.:p 11/25 15:38
3F:→ fillano:没有。是可以用for(var i in elem), i.indexOf('on')... 11/25 21:44
4F:→ fillano:等方式找到element的特定event handler,例如onclick,但 11/25 21:50
5F:→ fillano:是jquery应该只是assign一个proxy给他,然後透过这个proxy 11/25 21:51
6F:→ fillano:来呼叫jquery自己维护的handler。 11/25 21:52