$.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元素绑定两个事件,一个用冒泡,一个用捕获,会执行几次?先执行冒泡还是先执...