3.2 事件管理
Element.Event,提供事件的包装,元素绑定事件机制;Element.Delegation,提供事件委托机制, 即把一个(动态)子元素上的事件处理绑定委托到父容器上。都可在core文件中查看源码。
下面介绍几个常用的事件管理方法:
MooTools已经提供了window对象的自定义事件: ‘domready’。 MooTools就是用window.addEvent(‘domready’, function() {})方式来代替传统JavaScript的window.onload 方法的。
- 该事件在页面的DOM树加载完成后触发
- 在需要保证所要操作的DOM元素已经加载完成的情况,本事件将非常有用
- 本事件只对window对象有效
默认的情况下所有的代码都应该包含在‘domready’事件监听下。
在文档完成后,如果向一个元素添加一个事件监听器的方法是:addEvent()方法。第一个参数是事件类型,包括:
addEvents()方法允许您添加多个事件监听到一个元素(或元素的集合)。
MooTools 的灵活性之一就是可以自由的扩展,我们也可以创建自己的自定义事件。我们只需要给 Element.Events 对象扩展相应的属性就可以自定义事件了。示例如下:
自定义一个事件时,Element.Events.eventname中可包含如下内容:
base:(string, 可选) 自定义事件所监听的基类事件. 如果指定了下面condition参数,则本参数必须填写
condition:(function, 可选) 自定义事件触发的条件函数 (函数的参数为一个Event实例)
onAdd:(function, 可选) 当元素添加自定义事件时触发的函数 (函数的参数为一个Event实例)
onRemove:(function, 可选) 当元素删除自定义事件时触发的函数 (函数的参数为一个Event实例)
removeEvent()方法,它移除了一个指定的事件。如果你想删除一个元素的事件类型(或一组元素的事件类型),或者删除所有的事件,你必须使用removeEvents()方法。
使用cloneEvents()来克隆目标元素上的所有事件到本元素 。
3.3 扩展方式
也可以扩展window类或者已有函数。
另外,Mootools中定义了一个Event类,它提供了对原始window的事件对象event的扩展,使用的时候,可以 把原来的event对象作为Event的构造方法参数传入:
这样,返回的event就包含了所有mootools经过扩展的功能,具体扩展的属性和方法如下:
插件扩展一般使用new Class方式或者全局自动生成的方式。例如下面的Namespace插件: