js观察者模式
2015-10-10 08:33
495 查看
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script>
window.onload = function(){
var oDiv = document.getElementById('div1');
var oSpan = document.getElementById('span1');
bindEvent(oDiv , 'click',function(){
alert(1);
});
bindEvent(oDiv , 'click',function(){
alert(2);
});
bindEvent(oSpan , 'show',function(){
alert(3);
});
bindEvent(oSpan , 'show',function(){
alert(4);
});
bindEvent(oSpan , 'hide',function(){
alert(5);
});
//fireEvent(oSpan , 'show'); //3 , 4
};
function bindEvent(obj,events,fn){
//obj : 楼层
//events : 书架
//fn : 一本书
obj.listeners = obj.listeners || {};
obj.listeners[events] = obj.listeners[events] || [];
obj.listeners[events].push( fn );
console.log(obj.id+"------------"+obj.listeners[events]);
/*
var json = {"events1":['fn1','fn2'],'events2':['fn3','fn4']}
*/
if(obj.addEventListener){
obj.addEventListener(events,fn,false);
}
else{
obj.attachEvent('on'+events,fn);
}
}
function fireEvent(obj,events){ //主动触发自定义事件
for(var i=0;i<obj.listeners[events].length;i++){
obj.listeners[events][i]();
}
}
</script>
</head>
<body>
<div id="div1">div</div>
<span id="span1">span</span>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script>
window.onload = function(){
var oDiv = document.getElementById('div1');
var oSpan = document.getElementById('span1');
bindEvent(oDiv , 'click',function(){
alert(1);
});
bindEvent(oDiv , 'click',function(){
alert(2);
});
bindEvent(oSpan , 'show',function(){
alert(3);
});
bindEvent(oSpan , 'show',function(){
alert(4);
});
bindEvent(oSpan , 'hide',function(){
alert(5);
});
//fireEvent(oSpan , 'show'); //3 , 4
};
function bindEvent(obj,events,fn){
//obj : 楼层
//events : 书架
//fn : 一本书
obj.listeners = obj.listeners || {};
obj.listeners[events] = obj.listeners[events] || [];
obj.listeners[events].push( fn );
console.log(obj.id+"------------"+obj.listeners[events]);
/*
var json = {"events1":['fn1','fn2'],'events2':['fn3','fn4']}
*/
if(obj.addEventListener){
obj.addEventListener(events,fn,false);
}
else{
obj.attachEvent('on'+events,fn);
}
}
function fireEvent(obj,events){ //主动触发自定义事件
for(var i=0;i<obj.listeners[events].length;i++){
obj.listeners[events][i]();
}
}
</script>
</head>
<body>
<div id="div1">div</div>
<span id="span1">span</span>
</body>
</html>
相关文章推荐
- 公历和农历转换的JS代码
- 使用 jsoup 对 HTML 文档进行解析和操作
- C# 技巧(3) C# 操作 JSON
- 使用json-lib封装json
- JavaScript实现Ajax小结
- JSP九大内置对象
- js中(function(){…})()立即执行函数写法理解(转载oschina)
- js模块化历程
- js继承原理
- JSP中使用JSTL按不同条件输出内容的方法
- JSP实现用于自动生成表单标签html代码的自定义表单标签
- jsp实现Servlet文件下载的方法
- 页面内容排序插件jSort使用方法
- clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
- JS实现的车标图片提示效果代码
- JavaScript实现的浮动层框架用法实例分析
- JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
- EXTJS combo 二级联动求助
- JavaScript事件对象
- JSP页面间传递对象的方法与其特点