在BeyondSoft期间写了一个关于事件对象的分析报告,期间不断的总结。业余时间练习写了事件管理的各个版本(E0.0.1~E0.3.1)。目的希望根本工作需要选择不同的版本,因为有些库的事件模块很强大但却用不上。灵感来自JQuery
, Dean Edwards
, 灵图api
。当然还有与群里 猪婶婶
的讨论。
/**
* Event v0.3.1
* 1, 解决IE fn中丢失this
* 2, 统一了事件对象作为fn的第一个参数
* 3, 解决事件对象的兼容性问题,如阻止默认行为,停止冒泡等(支持DOM2/3 events)
* 4, remove方法新增删除元素type类型的所有监听器(参数传el,type)
* 5, remvoe方法新增删除元素所有的监听器(参数传el)
* 6, 解决了同一个事件的handlers执行顺序问题(IE无序,FF/Safari/Chrome中顺序)
* 8, add方法新增once参数,fn只执行一次
* 9, 增加对非html元素(普通对象)自定义事件---观察者模式
* 10,增加dispatch方法
*/
以下列出的是完整版E0.3.1的使用
1,最简单的添加、删除监听函数的事件
function handle(){
//todo
}
E.add(document,'click',handle);
E.remove(document,'click',handle);
2,为同一个元素添加多个handle时,执行有序。如下先弹出1,再2
function handle1(){
alert(1);
}
function handle2(){
alert(2);
}
E.add(document,'click',handle1);
E.add(document,'click',handle2);
3,handle只执行一次
function handle(){
alert(1);
}
E.add(document,'click',handle,true);
4,删除元素指定类型的所有监听器
function handle1(){
alert(1);
}
function handle2(){
alert(2);
}
E.add(document,'click',handle1);
E.add(document,'click',handle2);
E.remove(document,'click');
5,删除附加元素上的所有监听器
function handle1(){
alert(1);
}
function handle2(){
alert(2);
}
E.add(document,'click',handle1);
E.add(document,'mouseover',handle2);
E.remove(document);
6,主动触发事件。如模拟用户点击
function handle(){
alert(1);
}
E.add(document,'click',handle);
E.dispatch(document,'click');
7,如有必要,可给html元素添加自定义事件,使用dipatch触发
function handle(){
alert('myevent');
}
E.add(document,'myevent',handle);
E.dispatch(document,'myevent');
8,给任意对象添加自定义事件
function handle(){
alert('fish is swimming.');
}
var fish = {};
E.add(fish,'swimming',handle);
E.dispatch(fish,'swimming');
我整理的事件对象属性列表:
http://docs.google.com/View?id=dr9sm67_277d5g7wgdn
源码见附件
- E.rar (20.9 KB)
- 下载次数: 130
分享到:
相关推荐
"信心发布管理发布模块"是针对网站设计人员开发的一个关键工具,它专注于提升内容管理和发布的效率与质量。这个模块的设计目标是为网站的日常运营提供一个便捷、高效且可靠的平台,确保信息的准确无误地传达给用户。...
1. **.NET框架**:这是微软开发的一个开源、跨平台的开发平台,用于构建各种类型的桌面、移动、Web和云应用。C#作为.NET的主要编程语言,具有类型安全、面向对象和高性能的特点。 2. **C#编程语言**:C#是.NET框架...
最好最实用的新闻发布管理系统模块,可以让我们更方便的开发,让我们节省更多的时间,做更多的事,新闻发布,模块多多,内容多多。。。
Destoon采集发布模块是一款专...总的来说,Destoon采集发布模块是 Destoon 平台不可或缺的一部分,通过与火车头软件的配合,使得信息的采集和发布变得更加智能化和高效,对于运营一个全面且活跃的B2B网站来说至关重要。
本篇文章将详细探讨一个与PbootCMS相关的特殊功能——“PbootCMS火车头在线发布模块”,以及如何实现无需登录火车头就能进行数据发布。 首先,PbootCMS是一款基于PHP开发的开源内容管理系统,它以其轻量级、快速、...
综上所述,WordPress 3.4的发布模块是一个全面改进的工具,旨在提升内容创作者的工作效率和网站的管理体验。结合火车头采集工具,用户能够更便捷地获取、编辑和发布网络信息,打造出富有吸引力和竞争力的网站。
4. **日志博客模块**:这是一个个人或团队分享观点、发布文章的平台。它包括文章发布、分类、评论、搜索等功能,通常与用户系统集成,支持权限控制。开发者可能使用ASP内置的对象如Response、Request、Session来实现...
社区软件的一个重要组成部分,主要负责社区内容的创建和管理。Discuz! 是一款广泛使用的开源论坛系统,它提供了丰富的功能和灵活的扩展性,使得用户可以轻松搭建自己的在线论坛。在这个特定的发布模块中,用户无需...
信息发布管理模块主要用于展示图书馆新闻、图书馆通知公告等信息,以便读者更好地了解图书馆的最新动态。 借书管理模块主要用于管理用户借书操作,包括验证用户借书权限、记录用户所借图书的信息、确认用户借书数量...
传统上,模块之间直接依赖会导致更改一个模块可能影响到其他模块,而事件系统通过中间人(事件管理器)解耦了这种关系。模块A只需关心何时发布事件,而模块B只需关心何时响应事件,它们无需知道彼此的存在。这种松散...
本文将深入探讨一个基于PHP开发的人力资源管理模块,结合提供的代码和文档,来揭示其中的关键技术和实践应用。人力资源管理模块是企业管理的核心组成部分,它涵盖了员工信息管理、招聘流程、考勤记录、绩效评估、...
本文将深入探讨一个基于Servlet+Jsp+JavaBean+SQL2000技术的学生课绩管理系统,它包含了登陆模块、学生模块、教师模块以及管理员模块,旨在为高校提供一套高效、便捷的课绩管理解决方案。 首先,登陆模块是系统的...
【标签】中的"新闻发布系统"是指该模块的核心功能,即为用户提供一个平台,能够发布、编辑和管理新闻文章。"网站"表示这是应用于网站的软件组件,"模块"指的是该系统可以作为一个独立的部分嵌入到整体网站架构中。...
综合教务管理系统模块设计是高等教育机构中至关重要的一个部分,它涵盖了教学管理的各个环节,旨在提升教学质量和效率,减轻教务人员的工作负担。本系统通常包括多个子模块,每个子模块都专注于特定的教学活动,例如...
中澳宿舍管理系统是一个高效、全面的信息化管理平台,旨在优化宿舍管理工作,提升管理效率,确保学生住宿环境的安全与舒适。系统通过多个功能模块,实现了对学生信息、宿舍信息、卫生情况、费用管理、设备维修等多...
例如,当多个组件需要响应同一个事件时,它们都可以订阅同一个事件,而无需知道是谁触发了这个事件。这极大地提高了代码的复用性和可维护性。 此外,事件发布/订阅模式在异步编程中的应用非常广泛。比如在处理Ajax...
【标题】"帝国cms免登陆发布模块.zip"指的是一个针对帝国CMS内容管理系统设计的插件或功能模块,它允许用户在无需登录系统的情况下发布内容。这个特性对于网站访客或者某些特定用户群体来说非常方便,他们可以快速...
"新闻管理模块"是 ZenCart 系统中的一个重要组成部分,专门用于处理网站上的新闻发布和展示,为用户提供了一个方便、高效的信息发布平台。 ### 1. 模块介绍 新闻管理模块允许管理员在 ZenCart 商店中添加、编辑和...
模块化设计可以将这些复杂的功能分解为更小、更易于管理的部分,每个部分负责系统中的一个特定功能或一组相关功能。这种设计方式有以下几点优势: 1. **提高代码的可维护性**:模块化的代码结构清晰,易于理解,当...
标题提到的“新帝国CMS 7.2和7.5适用免登陆新闻火车头发布模块.wpm”是一个专门为这两个版本设计的插件,用于实现与新闻采集软件“火车头”(Lede)的无缝对接。 1. **火车头(Lede)发布模块**:火车头是一款高效...