Jump To …

default.js

(function ($) {

  $.fn.triggerAsync = function (type, data, success, prevented) {
    if (typeof data == 'function') {
      prevented = success;
      success = data;
      data = undefined;
    }

    if (this.length) {
      var el = this;

Trigger the event with the success callback as the success handler when triggerAsync called within another triggerAsync,it's the same tick time so we should use timeout http://javascriptweblog.wordpress.com/2010/06/28/understanding-javascript-timers/

      setTimeout(function () {
        el.trigger({
          type: type,
          _success: success,
          _prevented: prevented
        }, data);
      }, 0);

    } else {

If we have no elements call the success callback right away

      if (success) success.call(this);
    }
    return this;
  }

cache default types for performance

  var types = {},
    rnamespaces = /\.(.*)$/,
    $event = $.event;

  $event.special["default"] = {
    add: function (handleObj) {

save the type

      types[handleObj.namespace.replace(rnamespaces, "")] = true;
    },
    setup: function () {
      return true
    }
  }

overwrite trigger to allow default types

  var oldTrigger = $event.trigger;

  $event.trigger = function defaultTriggerer(event, data, elem, onlyHandlers) {

Event object or event type

    var type = event.type || event,

Caller can pass in an Event, Object, or just an event type string

      event = typeof event === "object" ?

jQuery.Event object

      event[$.expando] ? event :

Object literal

      new $.Event(type, event) :

Just the event type (string)

      new $.Event(type),
      res = oldTrigger.call($.event, event, data, elem, onlyHandlers),
      paused = event.isPaused && event.isPaused();

    if (!onlyHandlers && !event.isDefaultPrevented() && event.type.indexOf("default") !== 0) {

Trigger the default. event

      oldTrigger("default." + event.type, data, elem)
      if (event._success) {
        event._success(event)
      }
    }

    if (!onlyHandlers && event.isDefaultPrevented() && event.type.indexOf("default") !== 0 && !paused) {
      if (event._prevented) {
        event._prevented(event);
      }
    }

code for paused

    if (paused) {

set back original stuff

      event.isDefaultPrevented =
      event.pausedState.isDefaultPrevented;
      event.isPropagationStopped =
      event.pausedState.isPropagationStopped;
    }
    return res;
  };

  return $;
})(jQuery);