*/\r
var jQuery = function(a,c) {\r
\r
- // Shortcut for document ready (because $(document).each() is silly)\r
+ // Shortcut for document ready\r
if ( a && typeof a == "function" && jQuery.fn.ready && !a.nodeType && a[0] == undefined ) // Safari reports typeof on DOM NodeLists as a function\r
return jQuery(document).ready(a);\r
\r
// Make sure that a selection was provided\r
- a = a || jQuery.context || document;\r
+ a = a || document;\r
\r
// Watch for when a jQuery object is passed as the selector\r
if ( a.jquery )\r
}\r
\r
// Watch for when an array is passed in\r
- this.get( a.constructor == Array || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType ?\r
+ this.set( a.constructor == Array || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType ?\r
// Assume that it is an array of DOM Elements\r
jQuery.merge( a, [] ) :\r
\r
var $ = jQuery;\r
\r
/**\r
- * This function accepts a string containing a CSS selector,\r
- * basic XPath, or raw HTML, which is then used to match a set of elements.\r
- * The HTML string is different from the traditional selectors in that\r
- * it creates the DOM elements representing that HTML string, on the fly,\r
- * to be (assumedly) inserted into the document later.\r
+ * This function accepts a string containing a CSS or\r
+ * basic XPath selector which is then used to match a set of elements.\r
*\r
* The core functionality of jQuery centers around this function.\r
* Everything in jQuery is based upon this, or uses this in some way.\r
* The most basic use of this function is to pass in an expression\r
* (usually consisting of CSS or XPath), which then finds all matching\r
- * elements and remembers them for later use.\r
+ * elements.\r
*\r
* By default, $() looks for DOM elements within the context of the\r
* current HTML document.\r
* @before <p>one</p> <div><p>two</p></div> <p>three</p>\r
* @result [ <p>two</p> ]\r
*\r
- * @example $("<div><p>Hello</p></div>").appendTo("#body")\r
- * @desc Creates a div element (and all of its contents) dynamically, \r
- * and appends it to the element with the ID of body. Internally, an\r
- * element is created and it's innerHTML property set to the given markup.\r
- * It is therefore both quite flexible and limited. \r
+ * @example $("input:radio", document.forms[0])\r
+ * @desc Searches for all inputs of type radio within the first form in the document\r
+ *\r
+ * @example $("div", xml.responseXML)\r
+ * @desc This finds all div elements within the specified XML document.\r
*\r
* @name $\r
- * @param String expr An expression to search with, or a string of HTML to create on the fly.\r
+ * @param String expr An expression to search with\r
+ * @param Element context (optional) A DOM Element, or Document, representing the base context.\r
* @cat Core\r
* @type jQuery\r
+ * @see $(Element)\r
+ * @see $(Element<Array>)\r
*/\r
-\r
+ \r
/**\r
- * This function accepts a string containing a CSS selector, or\r
- * basic XPath, which is then used to match a set of elements with the\r
- * context of the specified DOM element, or document\r
+ * This function accepts a string of raw HTML.\r
*\r
- * @example $("div", xml.responseXML)\r
- * @desc This finds all div elements within the specified XML document.\r
+ * The HTML string is different from the traditional selectors in that\r
+ * it creates the DOM elements representing that HTML string, on the fly,\r
+ * to be (assumedly) inserted into the document later.\r
+ *\r
+ * @example $("<div><p>Hello</p></div>").appendTo("#body")\r
+ * @desc Creates a div element (and all of its contents) dynamically, \r
+ * and appends it to the element with the ID of body. Internally, an\r
+ * element is created and it's innerHTML property set to the given markup.\r
+ * It is therefore both quite flexible and limited. \r
*\r
* @name $\r
- * @param String expr An expression to search with.\r
- * @param Element context A DOM Element, or Document, representing the base context.\r
+ * @param String html A string of HTML to create on the fly.\r
* @cat Core\r
* @type jQuery\r
*/\r
* @param Number num Access the element in the Nth position.\r
* @cat Core\r
*/\r
+ get: function( num ) {\r
+ return num == undefined ?\r
\r
+ // Return a 'clean' array\r
+ jQuery.merge( this, [] ) :\r
+\r
+ // Return just the object\r
+ this[num];\r
+ },\r
+ \r
/**\r
* Set the jQuery object to an array of elements.\r
*\r
- * @example $("img").get([ document.body ]);\r
- * @result $("img").get() == [ document.body ]\r
+ * @example $("img").set([ document.body ]);\r
+ * @result $("img").set() == [ document.body ]\r
*\r
* @private\r
- * @name get\r
+ * @name set\r
* @type jQuery\r
* @param Elements elems An array of elements\r
* @cat Core\r
*/\r
- get: function( num ) {\r
- // Watch for when an array (of elements) is passed in\r
- if ( num && num.constructor == Array ) {\r
-\r
- // Use a tricky hack to make the jQuery object\r
- // look and feel like an array\r
- this.length = 0;\r
- [].push.apply( this, num );\r
-\r
- return this;\r
- } else\r
- return num == undefined ?\r
-\r
- // Return a 'clean' array\r
- jQuery.merge( this, [] ) :\r
-\r
- // Return just the object\r
- this[num];\r
+ set: function( array ) {\r
+ // Use a tricky hack to make the jQuery object\r
+ // look and feel like an array\r
+ this.length = 0;\r
+ [].push.apply( this, array );\r
+ return this;\r
},\r
\r
/**\r
* argument representing the position of the element in the matched\r
* set.\r
*\r
- * @example $("img").each(function(){\r
- * this.src = "test.jpg";\r
- * });\r
- * @before <img/> <img/>\r
- * @result <img src="test.jpg"/> <img src="test.jpg"/>\r
- *\r
* @example $("img").each(function(i){\r
- * alert( "Image #" + i + " is " + this );\r
+ * this.src = "test" + i + ".jpg";\r
* });\r
* @before <img/> <img/>\r
- * @result <img src="test.jpg"/> <img src="test.jpg"/>\r
+ * @result <img src="test0.jpg"/> <img src="test1.jpg"/>\r
+ * @desc Iterates over two images and sets their src property\r
*\r
* @name each\r
* @type jQuery\r
/**\r
* Set a single property to a value, on all matched elements.\r
*\r
+ * Note that you can't set the name property of input elements in IE.\r
+ * Use $(html) or $().append(html) or $().html(html) to create elements\r
+ * on the fly including the name property.\r
+ *\r
* @example $("img").attr("src","test.jpg");\r
* @before <img/>\r
* @result <img src="test.jpg"/>\r
end: function() {\r
if( !(this.stack && this.stack.length) )\r
return this;\r
- return this.get( this.stack.pop() );\r
+ return this.set( this.stack.pop() );\r
},\r
\r
/**\r
\r
/**\r
* Checks the current selection against an expression and returns true,\r
- * if the selection fits the given expression. Does return false, if the\r
- * selection does not fit or the expression is not valid.\r
+ * if at least one element of the selection fits the given expression.\r
+ * Does return false, if no element fits or the expression is not valid.\r
*\r
* @example $("input[@type='checkbox']").parent().is("form")\r
* @before <form><input type="checkbox" /></form>\r
},\r
\r
/**\r
- *\r
- *\r
* @private\r
* @name domManip\r
* @param Array args\r
* @param Boolean table\r
- * @param Number int\r
+ * @param Number dir\r
* @param Function fn The function doing the DOM manipulation.\r
* @type jQuery\r
* @cat Core\r
if ( !fn ) {\r
if ( !this.stack ) this.stack = [];\r
this.stack.push( this.get() );\r
- this.get( a );\r
+ this.set( a );\r
} else {\r
var old = this.get();\r
- this.get( a );\r
+ this.set( a );\r
\r
if ( fn2 && a.length || !fn2 )\r
- this.each( fn2 || fn ).get( old );\r
+ this.each( fn2 || fn ).set( old );\r
else\r
- this.get( old ).each( fn );\r
+ this.set( old ).each( fn );\r
}\r
\r
return this;\r
* @type Object\r
* @cat Javascript\r
*/\r
+ // args is for internal usage only\r
each: function( obj, fn, args ) {\r
if ( obj.length == undefined )\r
for ( var i in obj )\r
\r
ret = elem.style[prop];\r
\r
- } else if (elem.currentStyle) {\r
-\r
- var newProp = prop.replace(/\-(\w)/g,function(m,c){return c.toUpperCase();});\r
- ret = elem.currentStyle[prop] || elem.currentStyle[newProp];\r
-\r
} else if (document.defaultView && document.defaultView.getComputedStyle) {\r
\r
if (prop == "cssFloat" || prop == "styleFloat")\r
ret = 'none';\r
else\r
jQuery.swap(elem, { display: 'block' }, function() {\r
- ret = document.defaultView.getComputedStyle(this,null).getPropertyValue(prop);\r
+ var c = document.defaultView.getComputedStyle(this, '');\r
+ ret = c && c.getPropertyValue(prop) || '';\r
});\r
\r
+ } else if (elem.currentStyle) {\r
+\r
+ var newProp = prop.replace(/\-(\w)/g,function(m,c){return c.toUpperCase();});\r
+ ret = elem.currentStyle[prop] || elem.currentStyle[newProp];\r
+ \r
}\r
\r
return ret;\r
context = null;\r
\r
// Set the correct context (if none is provided)\r
- context = context || jQuery.context || document;\r
+ context = context || document;\r
\r
if ( t.constructor != String ) return [t];\r
\r
* This property is available before the DOM is ready, therefore you can\r
* use it to add ready events only for certain browsers.\r
*\r
- * See <a href="http://davecardwell.co.uk/geekery/javascript/jquery/jqbrowser/">\r
- * jQBrowser plugin</a> for advanced browser detection:\r
+ * There are situations where object detections is not reliable enough, in that\r
+ * cases it makes sense to use browser detection. Simply try to avoid both!\r
+ *\r
+ * A combination of browser and object detection yields quite reliable results.\r
*\r
* @example $.browser.msie\r
- * @desc returns true if the current useragent is some version of microsoft's internet explorer\r
+ * @desc Returns true if the current useragent is some version of microsoft's internet explorer\r
*\r
* @example if($.browser.safari) { $( function() { alert("this is safari!"); } ); }\r
* @desc Alerts "this is safari!" only for safari browsers\r
*\r
+ * @property\r
* @name $.browser\r
* @type Boolean\r
* @cat Javascript\r
*/\r
+ \r
+/*\r
+ * Wheather the W3C compliant box model is being used.\r
+ *\r
+ * @property\r
+ * @name $.boxModel\r
+ * @type Boolean\r
+ * @cat Javascript\r
+ */\r
new function() {\r
var b = navigator.userAgent.toLowerCase();\r
\r
* @cat DOM\r
*/\r
removeAttr: function( key ) {\r
+ jQuery.attr( this, key, "" );\r
this.removeAttribute( key );\r
},\r
\r
* @cat DOM\r
*/\r
toggleClass: function( c ){\r
- jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" ](this,c);\r
+ jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" ](this, c);\r
},\r
\r
/**\r