Jquery源码分析---Event分析
2010-09-14 13:36:25 来源:WEB开发网除了这些,它还能对于事件的处理函数进行分类(namespace),可以在合适的时候调用事件的不同分类的的处理函数(通过jquery.event.add来注册)。这个分类的处理在handle实现。
handle : function(event) {
// 返回 undefined or false
var val, ret, namespace, all, handlers;
//修改了传入的参数,这里是引用。
event = arguments[0] = jQuery.event.fix(event || window.event);
// 命名空间处理
namespace = event.type.split(".");
event.type = namespace[0];
namespace = namespace[1];
// all = true 表明任何 handler,namespace不存在,同时
//event.exclusive不存在或为假时,all=true.
all = !namespace && !event.exclusive;
// 找到元素的events中缓存的事件名的处理函数列表
handlers = (jQuery.data(this, "events") || {})[event.type];
for (var j in handlers) {// 每个处理函数执行
var handler = handlers[j];
// Filter the functions by class
if (all || handler.type == namespace) {
// 传入引用,为了之后删除它们
event.handler = handler;
event.data = handler.data;//add的时候加上的
ret = handler.apply(this, arguments);// 执行事件处理函数
if (val !== false)
val = ret;// 只要有一个处理函数返回false,本函数就返回false.
if (ret === false) {// 不执行浏览器默认的动作
event.preventDefault();
event.stopPropagation();
}
}
}
return val; },
更多精彩
赞助商链接