Speed results:
http://dev.jquery.com/~john/ticket/1351/ vs.
http://dev.jquery.com/~john/ticket/1351/113.html vs.
http://dev.jquery.com/~john/ticket/1351/112.html
/**
* Bind a function to the scroll event of each matched element.
*
/**
* Bind a function to the scroll event of each matched element.
*
// A fallback to window.onload, that will always work
jQuery.event.add( window, "load", jQuery.ready );
// A fallback to window.onload, that will always work
jQuery.event.add( window, "load", jQuery.ready );
// prevent execution of jQuery if included more than once
// prevent execution of jQuery if included more than once
-if(typeof window.jQuery == "undefined") {
+if(typeof window.jQuery == "undefined") (function(){
-// Global undefined variable
-window.undefined = window.undefined;
-
/**
* Create a new jQuery Object
*
/**
* Create a new jQuery Object
*
* @param jQuery|Element|Array<Element> c context
* @cat Core
*/
* @param jQuery|Element|Array<Element> c context
* @cat Core
*/
-var jQuery = function(a,c) {
+window.jQuery = function(a,c) {
// If the context is global, return a new object
if ( window == this || !this.init )
return new jQuery(a,c);
// If the context is global, return a new object
if ( window == this || !this.init )
return new jQuery(a,c);
jQuery._$ = $;
// Map the jQuery namespace to the '$' one
jQuery._$ = $;
// Map the jQuery namespace to the '$' one
/**
* This function accepts a string containing a CSS or
/**
* This function accepts a string containing a CSS or
}
if (prop.match(/float/i))
}
if (prop.match(/float/i))
- prop = jQuery.styleFloat;
if (!force && elem.style[prop])
ret = elem.style[prop];
if (!force && elem.style[prop])
ret = elem.style[prop];
* @type Boolean
* @cat JavaScript
*/
* @type Boolean
* @cat JavaScript
*/
-new function() {
- var b = navigator.userAgent.toLowerCase();
-
- // Figure out what browser is being used
- jQuery.browser = {
- version: (b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
- safari: /webkit/.test(b),
- opera: /opera/.test(b),
- msie: /msie/.test(b) && !/opera/.test(b),
- mozilla: /mozilla/.test(b) && !/(compatible|webkit)/.test(b)
- };
+var userAgent = navigator.userAgent.toLowerCase();
+
+// Figure out what browser is being used
+jQuery.browser = {
+ version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
+ safari: /webkit/.test(userAgent),
+ opera: /opera/.test(userAgent),
+ msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
+ mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
+};
+var styleFloat = jQuery.browser.msie ? "styleFloat" : "cssFloat";
+
+jQuery.extend({
// Check to see if the W3C box model is being used
// Check to see if the W3C box model is being used
- jQuery.boxModel = !jQuery.browser.msie || document.compatMode == "CSS1Compat";
-
- jQuery.styleFloat = jQuery.browser.msie ? "styleFloat" : "cssFloat";
-
- jQuery.props = {
+ boxModel: !jQuery.browser.msie || document.compatMode == "CSS1Compat",
+
+ styleFloat: jQuery.browser.msie ? "styleFloat" : "cssFloat",
+
+ props: {
"for": "htmlFor",
"class": "className",
"for": "htmlFor",
"class": "className",
- "float": jQuery.styleFloat,
- cssFloat: jQuery.styleFloat,
- styleFloat: jQuery.styleFloat,
+ "float": styleFloat,
+ cssFloat: styleFloat,
+ styleFloat: styleFloat,
innerHTML: "innerHTML",
className: "className",
value: "value",
innerHTML: "innerHTML",
className: "className",
value: "value",
readonly: "readOnly",
selected: "selected",
maxlength: "maxLength"
readonly: "readOnly",
selected: "selected",
maxlength: "maxLength"
/**
* Get a set of elements containing the unique parents of the matched
/**
* Get a set of elements containing the unique parents of the matched
+
+var chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ?
+ "(?:[\\w*_-]|\\\\.)" :
+ "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",
+ quickChild = new RegExp("^[/>]\\s*(" + chars + "+)"),
+ quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),
+ quickClass = new RegExp("^([#.]?)(" + chars + "*)");
+
jQuery.extend({
expr: {
"": "m[2]=='*'||jQuery.nodeName(a,m[2])",
jQuery.extend({
expr: {
"": "m[2]=='*'||jQuery.nodeName(a,m[2])",
/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,
// Match: :even, :last-chlid, #id, .class
/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,
// Match: :even, :last-chlid, #id, .class
- new RegExp("^([:.#]*)(" +
- ( jQuery.chars = jQuery.browser.safari && parseInt(jQuery.browser.version) < 417 ? "(?:[\\w*_-]|\\\\.)" : "(?:[\\w\u0128-\uFFFF*_-]|\\\\.)" ) + "+)")
+ new RegExp("^([:.#]*)(" + chars + "+)")
],
multiFilter: function( expr, elems, not ) {
],
multiFilter: function( expr, elems, not ) {
// An attempt at speeding up child selectors that
// point to a specific element tag
// An attempt at speeding up child selectors that
// point to a specific element tag
- var re = new RegExp("^[/>]\\s*(" + jQuery.chars + "+)");
var m = re.exec(t);
if ( m ) {
var m = re.exec(t);
if ( m ) {
} else {
// Optimize for the case nodeName#idName
} else {
// Optimize for the case nodeName#idName
- var re2 = new RegExp("^(" + jQuery.chars + "+)(#)(" + jQuery.chars + "+)");
var m = re2.exec(t);
// Re-organize the results, so that they're consistent
var m = re2.exec(t);
// Re-organize the results, so that they're consistent
} else {
// Otherwise, do a traditional filter check for
// ID, class, and element selectors
} else {
// Otherwise, do a traditional filter check for
// ID, class, and element selectors
- re2 = new RegExp("^([#.]?)(" + jQuery.chars + "*)");