JavaScript 自定义事件(事件的广播或侦听)

作者在 2009-07-13 13:39:44 发布以下内容

  刚刚接触 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

WEB开发 | 阅读 9246 次
文章评论,共1条
变幻小子
2011-03-22 22:17
1
你好&nbsp;&nbsp;路过看看
游客请输入验证码
浏览2882649次
文章归档
最新评论
  • 时光拾荒者:CtrlCV还是强的😝
  • 硬识岩丝:解决了,太感谢了~
  • xiwang12:路过
  • 里苦不功:不校验mysql版本是否与当前django框架是否兼容