Mercurial > nebulaweb3
view default/node_modules/shoestring/src/events/unbind.js @ 0:1d038bc9b3d2 default tip
Up:default
author | Liny <dev@neowd.com> |
---|---|
date | Sat, 31 May 2025 09:21:51 +0800 |
parents | |
children |
line wrap: on
line source
//>>excludeStart("exclude", pragmas.exclude); define([ "shoestring" ], function(){ //>>excludeEnd("exclude"); /** * Unbind a previous bound callback for an event. * * @param {string} event The event(s) the callback was bound to.. * @param {function} callback Callback to unbind. * @return shoestring * @this shoestring */ shoestring.fn.unbind = function( event, callback ){ //>>includeStart("development", pragmas.development); if( arguments.length >= 3 || typeof callback === "string" ){ shoestring.error( 'off-delegate' ); } //>>includeEnd("development"); var evts = event ? event.split( " " ) : []; return this.each(function(){ if( !this.shoestringData || !this.shoestringData.events ) { return; } if( !evts.length ) { unbindAll.call( this ); } else { var split, evt, namespace; for( var i = 0, il = evts.length; i < il; i++ ){ split = evts[ i ].split( "." ), evt = split[ 0 ], namespace = split.length > 0 ? split[ 1 ] : null; if( evt ) { unbind.call( this, evt, namespace, callback ); } else { unbindAll.call( this, namespace, callback ); } } } }); }; function unbind( evt, namespace, callback ) { var bound = this.shoestringData.events[ evt ]; if( !(bound && bound.length) ) { return; } var matched = [], j, jl; for( j = 0, jl = bound.length; j < jl; j++ ) { if( !namespace || namespace === bound[ j ].namespace ) { if( callback === undefined || callback === bound[ j ].originalCallback ) { this.removeEventListener( evt, bound[ j ].callback, false ); matched.push( j ); } } } for( j = 0, jl = matched.length; j < jl; j++ ) { this.shoestringData.events[ evt ].splice( j, 1 ); } } function unbindAll( namespace, callback ) { for( var evtKey in this.shoestringData.events ) { unbind.call( this, evtKey, namespace, callback ); } } shoestring.fn.off = shoestring.fn.unbind; //>>excludeStart("exclude", pragmas.exclude); }); //>>excludeEnd("exclude");