]> source.dussan.org Git - jquery.git/commitdiff
Merge branch 'Sub_Naming' of https://github.com/timmywil/jquery into timmywil-Sub_Naming
authorJohn Resig <jeresig@gmail.com>
Tue, 12 Apr 2011 20:05:40 +0000 (16:05 -0400)
committerJohn Resig <jeresig@gmail.com>
Tue, 12 Apr 2011 20:05:40 +0000 (16:05 -0400)
Conflicts:
src/core.js
src/css.js
src/event.js

1  2 
src/core.js
src/css.js
src/event.js

diff --cc src/core.js
Simple merge
diff --cc src/css.js
index b2d3af6553ad66746b2e1fa863d528a01b5ca70a,968188d6eff014aa22e4fdb8da024812228d1da3..c5c01ecace2308bd25f654817edcdc369629c7fe
@@@ -245,14 -228,14 +245,14 @@@ if ( !jQuery.support.opacity ) 
                        style.zoom = 1;
  
                        // Set the alpha filter to set the opacity
-                       var opacity = jQuery.isNaN(value) ?
+                       var opacity = jQuery.isNaN( value ) ?
 -                                      "" :
 -                                      "alpha(opacity=" + value * 100 + ")",
 -                              filter = style.filter || "";
 +                              "" :
 +                              "alpha(opacity=" + value * 100 + ")",
 +                              filter = currentStyle && currentStyle.filter || style.filter || "";
  
-                       style.filter = ralpha.test(filter) ?
-                               filter.replace(ralpha, opacity) :
+                       style.filter = ralpha.test( filter ) ?
+                               filter.replace( ralpha, opacity ) :
 -                              style.filter + ' ' + opacity;
 +                              filter + " " + opacity;
                }
        };
  }
diff --cc src/event.js
index 275afdf93867653cadccc942a37e35856fd543c6,01b05149a95d16c9059686df9f175fbfbce51641..d6b116d2e0a98b58c1d9cf389a63b11cd392368a
@@@ -266,141 -293,122 +266,141 @@@ jQuery.event = 
                        }
                }
        },
 +      
 +      // Events that are safe to short-circuit if no handlers are attached.
 +      // Native DOM events should not be added, they may have inline handlers.
 +      customEvent: {
 +              "getData": true,
 +              "setData": true,
 +              "changeData": true
 +      },
  
-       trigger: function( event, data, elem ) {
+       trigger: function( event, data, elem, bubbling /* For Internal Use Only */ ) {
                // Event object or event type
 -              var type = event.type || event;
 -
 -              if ( !bubbling ) {
 -                      event = typeof event === "object" ?
 -                              // jQuery.Event object
 -                              event[ jQuery.expando ] ? event :
 -                              // Object literal
 -                              jQuery.extend( jQuery.Event(type), event ) :
 -                              // Just the event type (string)
 -                              jQuery.Event(type);
 -
 -                      if ( type.indexOf("!") >= 0 ) {
 -                              event.type = type = type.slice(0, -1);
 -                              event.exclusive = true;
 -                      }
 +              var type = event.type || event,
 +                      namespaces = [],
 +                      exclusive;
  
 -                      // Handle a global trigger
 -                      if ( !elem ) {
 -                              // Don't bubble custom events when global (to avoid too much overhead)
 -                              event.stopPropagation();
 -
 -                              // Only trigger if we've ever bound an event for it
 -                              if ( jQuery.event.global[ type ] ) {
 -                                      // XXX This code smells terrible. event.js should not be directly
 -                                      // inspecting the data cache
 -                                      jQuery.each( jQuery.cache, function() {
 -                                              // internalKey variable is just used to make it easier to find
 -                                              // and potentially change this stuff later; currently it just
 -                                              // points to jQuery.expando
 -                                              var internalKey = jQuery.expando,
 -                                                      internalCache = this[ internalKey ];
 -                                              if ( internalCache && internalCache.events && internalCache.events[type] ) {
 -                                                      jQuery.event.trigger( event, data, internalCache.handle.elem );
 -                                              }
 -                                      });
 -                              }
 -                      }
 +              if ( type.indexOf("!") >= 0 ) {
 +                      // Exclusive events trigger only for the exact event (no namespaces)
 +                      type = type.slice(0, -1);
 +                      exclusive = true;
 +              }
  
 -                      // Handle triggering a single element
 +              if ( type.indexOf(".") >= 0 ) {
 +                      // Namespaced trigger; create a regexp to match event type in handle()
 +                      namespaces = type.split(".");
 +                      type = namespaces.shift();
 +                      namespaces.sort();
 +              }
  
 -                      // don't do events on text and comment nodes
 -                      if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
 -                              return undefined;
 -                      }
 +              if ( jQuery.event.customEvent[ type ] && !jQuery.event.global[ type ] ) {
 +                      // No jQuery handlers for this event type, and it can't have inline handlers
 +                      return;
 +              }
  
 -                      // Clean up in case it is reused
 -                      event.result = undefined;
 -                      event.target = elem;
 +              // Caller can pass in an Event, Object, or just an event type string
 +              event = typeof event === "object" ?
 +                      // jQuery.Event object
 +                      event[ jQuery.expando ] ? event :
 +                      // Object literal
 +                      jQuery.extend( jQuery.Event(type), event ) :
 +                      // Just the event type (string)
 +                      jQuery.Event(type);
  
 -                      // Clone the incoming data, if any
 -                      data = jQuery.makeArray( data );
 -                      data.unshift( event );
 -              }
 +              event.namespace = namespaces.join(".");
 +              event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)");
 +              event.exclusive = exclusive;
  
 -              event.currentTarget = elem;
 +              // Handle a global trigger
 +              if ( !elem ) {
 +                      // Don't bubble custom events when global (to avoid too much overhead)
 +                      event.stopPropagation();
  
 -              // Trigger the event, it is assumed that "handle" is a function
 -              var handle = elem.nodeType ?
 -                      jQuery._data( elem, "handle" ) :
 -                      (jQuery._data( elem, eventKey ) || {}).handle;
 +                      // Save some time, only trigger if we've ever bound an event for this type
 +                      if ( jQuery.event.global[ type ] ) {
 +                              // XXX This code smells terrible. event.js should not be directly
 +                              // inspecting the data cache
 +                              jQuery.each( jQuery.cache, function() {
 +                                      // internalKey variable is just used to make it easier to find
 +                                      // and potentially change this stuff later; currently it just
 +                                      // points to jQuery.expando
 +                                      var internalKey = jQuery.expando,
 +                                              internalCache = this[ internalKey ];
 +                                      if ( internalCache && internalCache.events && internalCache.events[ type ] ) {
 +                                              jQuery.event.trigger( event, data, internalCache.handle.elem );
 +                                      }
 +                              });
 +                      }
 +                      return;
 +              }
  
 -              if ( handle ) {
 -                      handle.apply( elem, data );
 +              // Don't do events on text and comment nodes
 +              if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
 +                      return;
                }
  
 -              var parent = elem.parentNode || elem.ownerDocument;
 +              // Clean up the event in case it is being reused
 +              event.result = undefined;
 +              event.target = elem;
  
 -              // Trigger an inline bound script
 -              try {
 -                      if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
 -                              if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
 -                                      event.result = false;
 -                                      event.preventDefault();
 -                              }
 +              // Clone any incoming data and prepend the event, creating the handler arg list
 +              data = data ? jQuery.makeArray( data ) : [];
 +              data.unshift( event );
 +
 +              var cur = elem,
 +                      // IE doesn't like method names with a colon (#3533, #8272)
 +                      ontype = type.indexOf(":") < 0 ? "on" + type : "";
 +
 +              // Fire event on the current element, then bubble up the DOM tree
 +              do {
 +                      var handle = jQuery._data( cur, "handle" );
 +
 +                      event.currentTarget = cur;
 +                      if ( handle ) {
 +                              handle.apply( cur, data );
                        }
  
 -              // prevent IE from throwing an error for some elements with some event types, see #3533
 -              } catch (inlineError) {}
 +                      // Trigger an inline bound script
 +                      if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) {
 +                              event.result = false;
 +                              event.preventDefault();
 +                      }
  
 -              if ( !event.isPropagationStopped() && parent ) {
 -                      jQuery.event.trigger( event, data, parent, true );
 +                      // Bubble up to document, then to window
 +                      cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;
 +              } while ( cur && !event.isPropagationStopped() );
  
 -              } else if ( !event.isDefaultPrevented() ) {
 +              // If nobody prevented the default action, do it now
 +              if ( !event.isDefaultPrevented() ) {
                        var old,
 -                              target = event.target,
 -                              targetType = type.replace( rnamespaces, "" ),
 -                              isClick = jQuery.nodeName( target, "a" ) && targetType === "click",
 -                              special = jQuery.event.special[ targetType ] || {};
 +                              special = jQuery.event.special[ type ] || {};
  
 -                      if ( (!special._default || special._default.call( elem, event ) === false) &&
 -                              !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
 +                      if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) &&
 +                              !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
  
 +                              // Call a native DOM method on the target with the same name name as the event.
 +                              // Can't use an .isFunction)() check here because IE6/7 fails that test.
 +                              // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.
                                try {
 -                                      if ( target[ targetType ] ) {
 -                                              // Make sure that we don't accidentally re-trigger the onFOO events
 -                                              old = target[ "on" + targetType ];
 +                                      if ( ontype && elem[ type ] ) {
 +                                              // Don't re-trigger an onFOO event when we call its FOO() method
 +                                              old = elem[ ontype ];
  
                                                if ( old ) {
 -                                                      target[ "on" + targetType ] = null;
 +                                                      elem[ ontype ] = null;
                                                }
  
 -                                              jQuery.event.triggered = true;
 -                                              target[ targetType ]();
 +                                              jQuery.event.triggered = type;
 +                                              elem[ type ]();
                                        }
 -
 -                              // prevent IE from throwing an error for some elements with some event types, see #3533
 -                              } catch (triggerError) {}
 +                              } catch ( ieError ) {}
  
                                if ( old ) {
 -                                      target[ "on" + targetType ] = old;
 +                                      elem[ ontype ] = old;
                                }
  
 -                              jQuery.event.triggered = false;
 +                              jQuery.event.triggered = undefined;
                        }
                }
        },