02-导言
8.0 导言
事件是用户和网站或者Web应用程序之间通信的主要方法。大部分JavaScript/jQuery编码都用来响应各种用户和浏览器事件。
这里所说的用户事件,基本是指键盘和鼠标交互,如 click 、 mousedown 、 keypress 等事件。浏览器事件指的主要是DOM事件,如 document.ready 、 window.onload 和许多与DOM元素相关的事件。
在Ajax应用程序编码中,还有自定义的jQuery Ajax事件,如 ajaxSend 、 ajaxComplete 、 ajaxError 等,这些事件在Ajax请求过程中调度。
jQuery的API一致性很好,尤其是对于事件。附加任何类型的事件处理程序的代码结构都相同:
jQuery( listener).bind( 'eventName', handlerFunction);
这一语法也适用于前面已经提到过的4类事件。jQuery的事件系统可以用于事件驱动编程。[1]可以创建和常规事件绑定与触发方式相同的自定义事件。
jQuery还为最常见的浏览器和Ajax事件提供了一个快捷方法。使用快捷方法的典型调用如下:
jQuery( listener).eventName( handlerFunction);
当使用 bind() 方法时, eventName 是放在单引号或者双引号中的一个字符串,而在使用快捷方法时,可以将事件名称当作jQuery方法的名称。
下面是使用和不使用快捷方式绑定单击事件处理程序的例子:
// 使用bind()
jQuery('div').bind('click',function(e){...});
// 使用快捷方法
jQuery('div').click(function(e){...});
在本章中,将在可以使用快捷方式的地方使用它,因为在我看来,快捷方式更简短易读。两者的效果相同,除了清晰和简洁之外,使用快捷方式没有其他的好处,使用哪一种方法只是爱好问题。
假定你已经阅读过第1章,该章已经详细地解释了 document.ready 事件(秘诀1.2)。如果你对该事件的用法有任何疑问,可以参考秘诀1.2。
我还要澄清一点,当使用插件这一术语时,大部分时候的意思是“插件、窗口组件或者就是代码块。”大部分jQuery用户倾向于将代码组织成类似插件的结构,通常在jQuery的命名空间中添加名称。
最后,jQuery的事件模块在jQuery 1.3中进行了很大的修改。我将根据使用的jQuery版本,提到代码中需要以不同方式处理的部分。