Re: [討論] 關於event handler

看板Ajax作者 (冒牌費大公)時間17年前 (2008/11/25 22:58), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串3/3 (看更多)
乾脆回文好了。 js core裡面沒有特別的方法可以用,我把我用來挖$.cache的方法貼一下好了: <html> <script src="js/jquery-1.2.6.js"></script> <body> <div id="panel">test</div> <div id="target">target</div> <script> $("#panel").click(function(e){ for(var i in this) { if(i.indexOf("jQuery")==0) { var tmp = this[i]; } } var ret = '<table border="1" cellspacing="0" cellpadding="2">'; for (var i in $.cache[tmp]['events']['click']) { ret += '<tr><td>' + i + ':</td><td>' + $.cache[tmp]['events']['click'][i] + '</td></tr>'; } ret += '</table>'; this.innerHTML = ret; }); $("#panel").click(function(e){ alert(this); }); $("#target").click(function(e){ alert('target'); }); $("#panel").click(function(e){ alert('test'); }); $("#target").click(function(e){ for(var i in this) { if(i.indexOf("jQuery")==0) { var tmp = this[i]; } } var ret = '<table border="1" cellspacing="0" cellpadding="2">'; for (var i in $.cache[tmp]['events']['click']) { ret += '<tr><td>' + i + ':</td><td>' + $.cache[tmp]['events']['click'][i] + '</td></tr>'; } ret += '</table>'; this.innerHTML = ret; }); </script> </body> </html> 有一點粗略,但是意思到就好。 剛剛看到,jquery還是用addEventListener或attachEvent來加入事件,把eventlistener 存在$.cache裡面,我想是為了要能removeEventListener,因為需要用到同一個函數的 reference才有辦法做。 dom2 event跟dom3 event都沒有提到怎樣query加到node上的EventListener,所以自己 管理恐怕是必須的吧? -- Sapere Aude! 這就是啟蒙運動的口號! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.248.166.83

11/25 23:24, , 1F
瞭解 感謝您的大力分享o(_ _)o
11/25 23:24, 1F

11/26 09:30, , 2F
推一個費公大神的分享!orz
11/26 09:30, 2F
文章代碼(AID): #19B1AoqS (Ajax)
文章代碼(AID): #19B1AoqS (Ajax)