刚刚接触 JS 不久,在做网页过程中,遇到了一个疑问:JavaScript 里有没有像 ActionScript 里那样的自定义事件处理机制(例如:AsBroadcaster 类等)。看了一堆E文(《JavaScript: The Definitive Guide, 5th Edition》),没搞太明白。最后决定还是自制一个简单的侦听功能吧。
function DoEvents(){ this.lstner=[] this.addListen=function(o){//添加侦听 this.lstner.push(o); } this.broadcastEvent=function(f,args){//广播事件 for(i=0;i<this.lstner.length;i++){ eval(f).apply(this.lstner[i],args); } } } |
应用实例:
<html> <head> <title>test</title> <script> function DoEvents(){ this.lstner=[]; this.addListen=function(obj){//添加侦听 obj=typeof(obj)=="string"?document.getElementById(obj):obj this.lstner.push(obj); } this.broadcastEvent=function(f,args){//广播事件 for(i=0;i<this.lstner.length;i++){ eval(f).apply(this.lstner[i],args); } } } //应用 var de=new DoEvents(); window.onload=function(){ for(i=0;i<6;i++){ de.addListen("test"+i); } } function showId(a){//测试 方法 this.innerHTML=a+this.id; } function test(){ var arr=["该标签的ID是:"]; de.broadcastEvent("showId",arr); } </script> </head> <body> <div id="test0">000</div> <div id="test1">111</div> <div id="test2">222</div> <div id="test3">333</div> <div id="test4">444</div> <div id="test5">555</div> <input type="button" onClick="test()" value="test" /> </body> </html> |
以上只是个测试,好的方法还请各位赐教!呵呵……
转自:http://hi.baidu.com/hasiz/blog/item/7914442372a2e0569922ed6e.html