01.<script type="text/javascript">
02. //自定义事件;事件是一种叫做观察者的设计模式
03.
04. function EventTarget(){
05. this.handlers={}; //函数处理器数组
06. }
07. EventTarget.prototype={
08. constructor:EventTarget,//手动指定constructor为EventTarget
09. addHandler:function(type,handler){//添加一个事件处理器
10. if(typeof this.handlers[type] == "undefined"){
11. this.handlers[type]=[];
12. }
13. this.handlers[type].push(handler);
14. },
15. fire:function(event){//触发事件
16. if(!event.target){
17. event.target=this;
18. }
19. if(this.handlers[event.type] instanceof Array){
20. var handlers=this.handlers[event.type];
21. for(var i=0,len=handlers.length;i<len;i++){
22. handlers[i](event);
23. }
24. }
25. },
26. removeHandler:function(type,handler){//删除事件处理器
27. if(this.handlers[type] instanceof Array){
28. var handlers=this.handlers[type];
29. for(var i=0,len=handlers.length;i<len;i++){
30. if(handlers[i]===handler){
31. break;
32. }
33. }
34. handlers.splice(i,1);//删除指定的handler处理器
35. }
36. }
37. }
38.
39.
40. function handleMessage(event){
41. alert(event.message);
42. }
43. var event_target=new EventTarget();
44. event_target.addHandler("message", handleMessage);
45. //event_target.removeHandler("message", handleMessage);
46. event_target.fire({type:"message",message:"hello world!"});
47. </script> 除了这种办法 大家还有什么比较好的方案 欢迎大家分享一下 谢谢
02. //自定义事件;事件是一种叫做观察者的设计模式
03.
04. function EventTarget(){
05. this.handlers={}; //函数处理器数组
06. }
07. EventTarget.prototype={
08. constructor:EventTarget,//手动指定constructor为EventTarget
09. addHandler:function(type,handler){//添加一个事件处理器
10. if(typeof this.handlers[type] == "undefined"){
11. this.handlers[type]=[];
12. }
13. this.handlers[type].push(handler);
14. },
15. fire:function(event){//触发事件
16. if(!event.target){
17. event.target=this;
18. }
19. if(this.handlers[event.type] instanceof Array){
20. var handlers=this.handlers[event.type];
21. for(var i=0,len=handlers.length;i<len;i++){
22. handlers[i](event);
23. }
24. }
25. },
26. removeHandler:function(type,handler){//删除事件处理器
27. if(this.handlers[type] instanceof Array){
28. var handlers=this.handlers[type];
29. for(var i=0,len=handlers.length;i<len;i++){
30. if(handlers[i]===handler){
31. break;
32. }
33. }
34. handlers.splice(i,1);//删除指定的handler处理器
35. }
36. }
37. }
38.
39.
40. function handleMessage(event){
41. alert(event.message);
42. }
43. var event_target=new EventTarget();
44. event_target.addHandler("message", handleMessage);
45. //event_target.removeHandler("message", handleMessage);
46. event_target.fire({type:"message",message:"hello world!"});
47. </script> 除了这种办法 大家还有什么比较好的方案 欢迎大家分享一下 谢谢
解决方案 »
- 谁能帮我找段用js编的音乐播放器代码?一段也可以
- JS函数绑定的时候出的问题。郁闷了。。大家帮忙看看
- javascript如何载入外部的json文件
- 动态增加一个下拉选项,如何把其改为默认(selected)?
- 求添加表单输入框的代码
- radio 的check属性支持 三元运算符吗?谢谢。分不多了,对不住大家了
- 关于在网页中嵌入文件夹的问题?
- 如果有兩個frame,有沒有屬性讓其中的一個變成不能訪問,就是對這個frame裡面的button,link失效
- 如何根据选中的单选框不同而跳转到不同页面?
- 请问怎样实现中文的表单名称校验?
- EXTJS问题:怎样取消鼠标移动到行时背景高亮?
- 关于如何控制js事件绑定执行顺序的问题?
就写一两个组件的话,直接回调函数实现事件就可以了
谢谢分享