1 /** 2 * @fileOverview KISSY Scalable Event Framework 3 * @author yiminghe@gmail.com 4 */ 5 KISSY.add("event", function (S, _data, KeyCodes, Event, Target, Object) { 6 S.mix(Event, 7 /** 8 * @lends Event 9 */ 10 { 11 KeyCodes:KeyCodes, 12 Target:Target, 13 Object:Object, 14 on:Event.add, 15 detach:Event.remove, 16 /** 17 * 18 * @param targets KISSY selector 19 * @param {String} [eventType] The type of event to delegate. 20 * use space to separate multiple event types. 21 * @param {String|Function} selector filter selector string or function to find right element 22 * @param {Function} [fn] The event handler/listener. 23 * @param {Object} [scope] The scope (this reference) in which the handler function is executed. 24 */ 25 delegate:function (targets, eventType, selector, fn, scope) { 26 return Event.add(targets, eventType, { 27 fn:fn, 28 scope:scope, 29 selector:selector 30 }); 31 }, 32 /** 33 * @param targets KISSY selector 34 * @param {String} [eventType] The type of event to undelegate. 35 * use space to separate multiple event types. 36 * @param {String|Function} selector filter selector string or function to find right element 37 * @param {Function} [fn] The event handler/listener. 38 * @param {Object} [scope] The scope (this reference) in which the handler function is executed. 39 */ 40 undelegate:function (targets, eventType, selector, fn, scope) { 41 return Event.remove(targets, eventType, { 42 fn:fn, 43 scope:scope, 44 selector:selector 45 }); 46 } 47 }); 48 49 S.mix(Event, _data); 50 51 S.mix(S, { 52 Event:Event, 53 EventTarget:Event.Target, 54 EventObject:Event.Object 55 }); 56 57 return Event; 58 }, { 59 requires:[ 60 "event/data", 61 "event/keycodes", 62 "event/base", 63 "event/target", 64 "event/object", 65 "event/focusin", 66 "event/hashchange", 67 "event/valuechange", 68 "event/mouseenter", 69 "event/submit", 70 "event/change", 71 "event/mousewheel", 72 "event/add", 73 "event/remove" 74 ] 75 }); 76 77 /** 78 * 2012-02-12 yiminghe@gmail.com note: 79 * - 普通 remove() 不管 selector 都会查,如果 fn scope 相等就移除 80 * - undelegate() selector 为 "",那么去除所有委托绑定的 handler 81 */