elem = null;
},
global: {},
// 真正的事件处理函数,
// 由于是通过 return jQuery.event.handle.apply(eventHandle.elem, arguments) 调用的
// 所以,此时的 this 就是事件源对象,event 是事件参数
handle: function (event) { // 1904
var all, handlers, namespaces, namespace, events;
event = window.event;
event.currentTarget = this;
// 在当前的事件对象上找到事件处理列表
var events = jQuery.data(this, “events”), handlers = events[event.type];
if (events && handlers) {
// Clone the handlers to prevent manipulation
handlers = handlers.slice(0);
for (var j = 0, l = handlers.length; j < l; j++) {
var handleObj = handlers[j];
// 取得注册事件时保存的参数
event.handler = handleObj.handler;
event.data = handleObj.data;
event.handleObj = handleObj;
var ret = handleObj.handler.apply(this, arguments);
}
}
return event.result;
},
// #2020
special: {}
}
// bind 函数定义
jQuery.fn.bind = function( type, fn)
{
var handler = fn;
// 调用 jQuery.event.add 添加事件
for (var i = 0, l = this.length; i < l; i++) {
jQuery.event.add(this[i], type, handler);
}
return this;
}
jQuery.fn.unbind = function (type, fn) {
// Handle object literals
if (typeof type === “object” && !type.preventDefault) {
for (var key in type) {
this.unbind(key, type[key]);
}
} else {
for (var i = 0, l = this.length; i < l; i++) {
jQuery.event.remove(this[i], type, fn);
}
}
return this;
}
// click 事件的注册方法
jQuery.fn.click = function (fn) {
this.bind(“click”, fn);
return this;
}
这样,对于页面上的 id 为 msg 的元素,就可以通过下面的代码注册一个 click 事件处理函数。
// 事件操作
$(“#msg”).click(
function () {
alert(this.innerHTML);
}
);










