tinymce.full.js
function off(name, callback) {
        var i, handlers, bindingName, names, hi;

        if (name) {
          names = name.toLowerCase().split(' ');
          i = names.length;
          while (i--) {
            name = names[i];
            handlers = bindings[name];

            // Unbind all handlers
            if (!name) {
              for (bindingName in bindings) {
                toggleEvent(bindingName, false);
                delete bindings[bindingName];
              }

              return self;
            }

            if (handlers) {
              // Unbind all by name
              if (!callback) {
                handlers.length = 0;
              } else {
                // Unbind specific ones
                hi = handlers.length;
                while (hi--) {
                  if (handlers[hi].func === callback) {
                    handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));
                    bindings[name] = handlers;
                  }
                }
              }

              if (!handlers.length) {
                toggleEvent(name, false);
                delete bindings[name];
              }
            }
          }
        } else {
          for (name in bindings) {
            toggleEvent(name, false);
          }

          bindings = {};
        }

        return self;
      }
function off(name, callback) {
        var i, handlers, bindingName, names, hi;

        if (name) {
          names = name.toLowerCase().split(' ');
          i = names.length;
          while (i--) {
            name = names[i];
            handlers = bindings[name];

            // Unbind all handlers
            if (!name) {
              for (bindingName in bindings) {
                toggleEvent(bindingName, false);
                delete bindings[bindingName];
              }

              return self;
            }

            if (handlers) {
              // Unbind all by name
              if (!callback) {
                handlers.length = 0;
              } else {
                // Unbind specific ones
                hi = handlers.length;
                while (hi--) {
                  if (handlers[hi].func === callback) {
                    handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));
                    bindings[name] = handlers;
                  }
                }
              }

              if (!handlers.length) {
                toggleEvent(name, false);
                delete bindings[name];
              }
            }
          }
        } else {
          for (name in bindings) {
            toggleEvent(name, false);
          }

          bindings = {};
        }

        return self;
      }
function off ( name , callback ) { var i , handlers , bindingName , names , hi ; if ( name ) { names = name . toLowerCase ( ) . split ( ' ' ) ; i = names . length ; while ( i -- ) { name = names [ i ] ; handlers = bindings [ name ] ; // Unbind all handlers if ( ! name ) { for ( bindingName in bindings ) { toggleEvent ( bindingName , false ) ; delete bindings [ bindingName ] ; } return self ; } if ( handlers ) { // Unbind all by name if ( ! callback ) { handlers . length = 0 ; } else { // Unbind specific ones hi = handlers . length ; while ( hi -- ) { if ( handlers [ hi ] . func === callback ) { handlers = handlers . slice ( 0 , hi ) . concat ( handlers . slice ( hi + 1 ) ) ; bindings [ name ] = handlers ; } } } if ( ! handlers . length ) { toggleEvent ( name , false ) ; delete bindings [ name ] ; } } } } else { for ( name in bindings ) { toggleEvent ( name , false ) ; } bindings = { } ; } return self ; }
Unbinds an event listener to a specific event by name.

@method off
@param {String?} name Name of the event to unbind.
@param {callback?} callback Callback to unbind.
@return {Object} Current class instance.
@example
// Unbind specific callback
instance.off('event', handler);

// Unbind all listeners by name
instance.off('event');

// Unbind all events
instance.off();
Unbinds an event listener to a specific event by name .