$.events = (function() {
var __this, listen, trigger, one, remove, l, t, anony;
__this = this, l = {}, t = {},anony = function() {};
listen = function(key, eventfn) {
if(l[key]) {
l[key].push(eventfn || anony);
} else {
l[key] = [eventfn || anony];
}
t[key] && eventfn.apply(__this, t[key]); //先triggger后listen的情况
};
trigger = function() {
var key = [].shift.call(arguments);
var ls = l[key];
if(ls && ls.length) {
for(var i = 0, len = ls.length; i < len; i++) {
var fn = ls[i];
fn.apply(__this, arguments);
}
} else {
t[key] = arguments; //无listen,保存trigger
}
}
one = function(key, eventfn) {
remove(key);
return listen(key, eventfn); //只触发一次,如果有相同的key
};
remove = function(key) {
l[key] = void 0;
t[key] = void 0;
};
return {
listen: listen,
one: one,
remove: remove,
trigger: trigger
}
})();
事件
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 1: DOM0 事件和DOM2级在事件监听使用方式上有什么区别? DOM0级方法指定的事件处理程序被认为是元素的方...
- 事件分类 鼠标事件 click/ mousedown/ mousemove/ mouseup/ contextme...
- 一.事件 事件是用户或浏览器自身执行的某种动作,这是我自己的理解。 二.事件流 事件流描述的是从页面中接收事件的顺...
- 这个问题的整理是基于面试题:给同一个DOM元素绑定两个事件,一个用冒泡,一个用捕获,会执行几次?先执行冒泡还是先执...