jQueryã®bindãunbindã¿ããã«namespace使ã£ã¦addEventã¨ãremoveEventã§ãããã¤
jQueryã®bindã¨unbindã¯è¶ 便å©ããªãã¨æã£ã¦ãarguments.calleeãããªãã¦ãremoveEventã§ãããããªãã¤æ¸ãããaddEventListenerã¨removeEventLisetenerã«namespace渡ãã¦ç®¡çã§ããçãªãiOSã§åãã°ããããattachEventã¨detachEventã¯å ¥ãã¦ãªãã§ãã
çµå±æãã¤ããããæ¹ã§ãã£ã¦ãjQueryã¡ããã¨èªãã§ãªããã©ãããæ¹ã¯ãããªæãï¼ã¤ã¾ã絶è³åå¼·ä¸ãã
å·¡ãå·¡ã£ã¦Element.prototypeãæ念ããã½ã¼ã¹ä¿®æ£ãããã©ãããªããã£ã¡ã®æ¹ã使ãããããããElementã®prototypeã«å·®ãè¾¼ãã
revision: gist: 904063
bindã®ä½¿ãæ¹
ä¸çªãã¼ã·ãã¯
æ®éã®addEventListenerã¨åã
bind(hoge, type, func);
åå空é
åå空é使ã£ã¦addEventããï¼unbindç¨ï¼
bind(hoge, type.namespace, func);
ä¸æ¬addEvent
è¤æ°ã®ã¤ãã³ããä¸æ¬ã§addEvent
bind(hoge, { Â Â "click": func, Â Â "dblclick": func });
unbindã®ä½¿ãæ¹
å ¨ã¦ã®ã¤ãã³ãã解é¤
å ¨é¨æ¶ãã
unbind(hoge);
æå®ããtypeã®ã¤ãã³ãã解é¤
âclickâã«ã²ãã¥ãã¦ãã¤ãã³ããå ¨é¨æ¶ãã
unbind(hoge, type);
æå®ããtype.namespaceã®ã¤ãã³ãã解é¤
âclick.unkoâã®ã¤ãã³ãã®ã¿æ¶ãã
unbind(hoge, type.namespace);
ãªããã§ãä¸éå端ã§ã¨ããã©ãããã¾ãåãã¦ãªãããã
/* * bind, unbind * * @author : nori() * @copyright : 5509(https://5509.me/) * @license : The MIT License * @modified : 2011-04-06 13:00 * * HOW TO USE * bind event : bind(elm, type, func) or bind(elm, {}) * bind event.name : bind(elm, type.name, func) * unbind all events : unbind(elm) * unbind events(type) : unbind(elm, type) * unbind event.name : unbind(elm, type.name) */ YOURNAMESPACE.bind = function() {   var i, _a = arguments;   // ä¸æ¬ç»é²   if ( typeof _a[1] === "object" ) {     for ( i in _a[1] ) {       bindFunc(i, _a[1][i]);     }   // åä½ç»é²   } else {     bindFunc(_a[1], _a[2]);   }   function bindFunc(type, func) {     var i;     type = type.split(" ");     for ( i = 0, l = type.length; i < l; i++ ) {       // åå空éã®æå®ãããå ´å       if ( type[i].indexOf(".") !== -1 ) {         type[i] = type[i].split(".");         _a[0]["bindedNamed"] = _a[0]["bindedNamed"] || {};         _a[0]["bindedNamed"][type[i][0]] = _a[0]["bindedNamed"][type[i][0]] || {};         _a[0]["bindedNamed"][type[i][0]][type[i][1]] = func;         _a[0].addEventListener(type[i][0], func, false);       // åå空éã®æå®ããªãå ´å       } else {         _a[0]["binded"] = _a[0]["binded"] || {};         _a[0]["binded"][type] = _a[0]["binded"][type] || [];         _a[0]["binded"][type][_a[0]["binded"][type].length] = func;         _a[0].addEventListener(type[i], func, false);       }     }   } } YOURNAMESPACE.unbind = function(elm, type) {   var i = 0, c, d, bindedTypes, bindedEvents, bindedNamedEvents;   // typeããªãå ´åã¯å ¨åé¤ Â Â if ( !type ) {     // åå空éç¡ãã®ã¤ãã³ããåé¤ Â Â Â Â if ( elm["binded"] ) {       bindedTypes = elm["binded"];       for ( c in bindedTypes ) {         bindedEvents = bindedTypes[c];         while ( bindedEvents[i] ) {           elm.removeEventListener(c, bindedEvents[i], false);           bindedEvents.splice(i, i + 1);         }       }     }     // åå空éæãã®ã¤ãã³ããåé¤ Â Â Â Â if ( !elm["bindedNamed"] ) return false;     bindedNamedEvents = elm["bindedNamed"];     for ( c in bindedNamedEvents ) {       for ( d in bindedNamedEvents[c] ) {         elm.removeEventListener(c, bindedNamedEvents[c][d], false);       }       delete bindedNamedEvents[c];     }   } else   // namespaceã®æå®ãããå ´åã¯åä½åé¤ Â Â if ( type.indexOf(".") !== -1 ) {     type = type.split(".");     elm.removeEventListener(type[0], elm["bindedNamed"][type[0]][type[1]], false);   // typeã¯ãããã©åå空éã®æå®ããªãå ´åã¯typeã ãåé¤ Â Â } else {     // åå空éç¡ãã®ã¤ãã³ããåé¤ Â Â Â Â if ( elm["binded"] && elm["binded"][type] ) {       bindedEvents = elm["binded"][type];       while ( bindedEvents[i] ) {         elm.removeEventListener(type, bindedEvents[i], false);         bindedEvents.splice(i, i + 1);       }     }     // åå空éæãã®ã¤ãã³ããåé¤ Â Â Â Â if ( !elm["bindedNamed"] || !elm["bindedNamed"][type] ) return false;     bindedNamedEvents = elm["bindedNamed"][type];     for ( c in bindedNamedEvents ) {       elm.removeEventListener(type, bindedNamedEvents[c], false);     }     delete bindedNamedEvents;   } }
Trackbacks: 0
- Trackback URL for this entry
- Listed below are links to weblogs that reference
- jQueryã®bindãunbindã¿ããã«namespace使ã£ã¦addEventã¨ãremoveEventã§ããã㤠from 5509
Leave a comment