Committer: anazarov
LJSUP-13138: Fix _off method for basicWidget pub/sub systemU trunk/htdocs/js/jquery/jquery.lj.basicWidget.js
Modified: trunk/htdocs/js/jquery/jquery.lj.basicWidget.js =================================================================== --- trunk/htdocs/js/jquery/jquery.lj.basicWidget.js 2012-08-06 05:45:49 UTC (rev 12418) +++ trunk/htdocs/js/jquery/jquery.lj.basicWidget.js 2012-08-06 06:35:49 UTC (rev 12419) @@ -97,7 +97,7 @@ * @param {Function} callback Function that should be fired on the event. */ _on: function( type, callback ) { - if( !( type in __callbacks ) ) { + if (!__callbacks.hasOwnProperty(type)) { __callbacks[ type ] = []; } @@ -127,12 +127,15 @@ * callbacks of this instance from the subscription on this type of event. */ _off: function( type, callback ) { - if( !( type in __callbacks ) ) { return; } + if (!__callbacks.hasOwnProperty(type)) { + return; + } var cbs = __callbacks[ type ]; - for( var i = 0; i < cbs.length; ++i ) { - if( ( callback && cbs[ i ].fn === callback ) || ( cbs[i].owner === this ) ) { - cbs.splice( i, 1 ); + + for (var i = 0; i < cbs.length; ++i) { + if ((cbs[i].fn === callback) || (!callback && cbs[i].owner === this)) { + cbs.splice(i--, 1); } } }, @@ -189,7 +192,7 @@ cbs = __callbacks[ type ]; for( var i = 0; i < cbs.length; ++i ) { if( cbs[i].owner === this ) { - cbs.splice( i, 1 ) + cbs.splice( i--, 1 ) } } }