X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fjquery%2Fjquery.js;h=3d9e3042aae716d6f2842664c574f94f04171618;hb=04b51d353a45ec413631bf8715152b8c290b467b;hp=b2252077377a0dd239eab12892ba32d7a7738242;hpb=370c6d564a295cf7d5ccdcafc1bb66d07d615014;p=jquery.git
diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js
index b225207..3d9e304 100644
--- a/src/jquery/jquery.js
+++ b/src/jquery/jquery.js
@@ -18,16 +18,18 @@ window.undefined = window.undefined;
* @constructor
* @private
* @name jQuery
+ * @param String|Function|Element|Array|jQuery a selector
+ * @param jQuery|Element|Array c context
* @cat Core
*/
var jQuery = function(a,c) {
-
- // Shortcut for document ready
- if ( a && typeof a == "function" && jQuery.fn.ready && !a.nodeType && a[0] == undefined ) // Safari reports typeof on DOM NodeLists as a function
- return jQuery(document).ready(a);
-
// Make sure that a selection was provided
a = a || document;
+
+ // Shortcut for document ready
+ // Safari reports typeof on DOM NodeLists as a function
+ if ( typeof a == "function" && !a.nodeType && a[0] == undefined )
+ return jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a );
// Watch for when a jQuery object is passed as the selector
if ( a.jquery )
@@ -48,21 +50,12 @@ var jQuery = function(a,c) {
}
// Watch for when an array is passed in
- this.set( a.constructor == Array || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType ?
+ return this.setArray( a.constructor == Array || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType ?
// Assume that it is an array of DOM Elements
jQuery.makeArray( a ) :
// Find the matching elements and save them for later
jQuery.find( a, c ) );
-
- // See if an extra function was provided
- var fn = arguments[ arguments.length - 1 ];
-
- // If so, execute it in context
- if ( fn && typeof fn == "function" )
- this.each(fn);
-
- return this;
};
// Map over the $ in case of overwrite
@@ -86,7 +79,7 @@ var $ = jQuery;
* current HTML document.
*
* @example $("div > p")
- * @desc This finds all p elements that are children of a div element.
+ * @desc Finds all p elements that are children of a div element.
* @before one
three
* @result [ two
]
*
@@ -98,7 +91,7 @@ var $ = jQuery;
*
* @name $
* @param String expr An expression to search with
- * @param Element context (optional) A DOM Element, or Document, representing the base context.
+ * @param Element|jQuery context (optional) A DOM Element, Document or jQuery to use as context
* @cat Core
* @type jQuery
* @see $(Element)
@@ -106,11 +99,7 @@ var $ = jQuery;
*/
/**
- * This function accepts a string of raw HTML.
- *
- * The HTML string is different from the traditional selectors in that
- * it creates the DOM elements representing that HTML string, on the fly,
- * to be (assumedly) inserted into the document later.
+ * Create DOM elements on-the-fly from the provided String of raw HTML.
*
* @example $("").appendTo("#body")
* @desc Creates a div element (and all of its contents) dynamically,
@@ -122,34 +111,28 @@ var $ = jQuery;
* @param String html A string of HTML to create on the fly.
* @cat Core
* @type jQuery
+ * @see appendTo(String)
*/
/**
- * Wrap jQuery functionality around a specific DOM Element.
+ * Wrap jQuery functionality around a single or multiple DOM Element(s).
+ *
* This function also accepts XML Documents and Window objects
* as valid arguments (even though they are not DOM Elements).
*
* @example $(document).find("div > p")
* @before one
three
* @result [ two
]
+ * @desc Same as $("div > p") because the document
*
* @example $(document.body).background( "black" );
* @desc Sets the background color of the page to black.
*
- * @name $
- * @param Element elem A DOM element to be encapsulated by a jQuery object.
- * @cat Core
- * @type jQuery
- */
-
-/**
- * Wrap jQuery functionality around a set of DOM Elements.
- *
* @example $( myForm.elements ).hide()
* @desc Hides all the input elements within a form
*
* @name $
- * @param Array elems An array of DOM elements to be encapsulated by a jQuery object.
+ * @param Element|Array elems DOM element(s) to be encapsulated by a jQuery object.
* @cat Core
* @type jQuery
*/
@@ -229,6 +212,8 @@ jQuery.fn = jQuery.prototype = {
size: function() {
return this.length;
},
+
+ length: 0,
/**
* Access all matched elements. This serves as a backwards-compatible
@@ -238,6 +223,7 @@ jQuery.fn = jQuery.prototype = {
* @example $("img").get();
* @before
* @result [ ]
+ * @desc Selects all images in the document and returns the DOM Elements as an Array
*
* @name get
* @type Array
@@ -248,9 +234,10 @@ jQuery.fn = jQuery.prototype = {
* Access a single matched element. num is used to access the
* Nth element matched.
*
- * @example $("img").get(1);
+ * @example $("img").get(0);
* @before
* @result [ ]
+ * @desc Selects all images in the document and returns the first one
*
* @name get
* @type Element
@@ -268,7 +255,8 @@ jQuery.fn = jQuery.prototype = {
},
/**
- * Set the jQuery object to an array of elements.
+ * Set the jQuery object to an array of elements, while maintaining
+ * the stack.
*
* @example $("img").set([ document.body ]);
* @result $("img").set() == [ document.body ]
@@ -279,11 +267,29 @@ jQuery.fn = jQuery.prototype = {
* @param Elements elems An array of elements
* @cat Core
*/
- set: function( array ) {
- // Use a tricky hack to make the jQuery object
- // look and feel like an array
+ set: function( a ) {
+ var ret = jQuery(this);
+ ret.prevObject = this;
+ return ret.setArray( a );
+ },
+
+ /**
+ * Set the jQuery object to an array of elements. This operation is
+ * completely destructive - be sure to use .set() if you wish to maintain
+ * the jQuery stack.
+ *
+ * @example $("img").setArray([ document.body ]);
+ * @result $("img").setArray() == [ document.body ]
+ *
+ * @private
+ * @name setArray
+ * @type jQuery
+ * @param Elements elems An array of elements
+ * @cat Core
+ */
+ setArray: function( a ) {
this.length = 0;
- [].push.apply( this, array );
+ [].push.apply( this, a );
return this;
},
@@ -300,8 +306,8 @@ jQuery.fn = jQuery.prototype = {
* @example $("img").each(function(i){
* this.src = "test" + i + ".jpg";
* });
- * @before
- * @result
+ * @before
+ * @result
* @desc Iterates over two images and sets their src property
*
* @name each
@@ -318,21 +324,24 @@ jQuery.fn = jQuery.prototype = {
* the index of the element, if found, starting with zero.
* Returns -1 if the object wasn't found.
*
- * @example $("*").index(document.getElementById('foobar'))
+ * @example $("*").index( $('#foobar')[0] )
* @before
* @result 0
+ * @desc Returns the index for the element with ID foobar
*
- * @example $("*").index(document.getElementById('foo'))
+ * @example $("*").index( $('#foo'))
* @before
* @result 2
+ * @desc Returns the index for the element with ID foo
*
- * @example $("*").index(document.getElementById('bar'))
+ * @example $("*").index( $('#bar'))
* @before
* @result -1
+ * @desc Returns -1, as there is no element with ID bar
*
* @name index
* @type Number
- * @param Object obj Object to search for
+ * @param Element subject Object to search for
* @cat Core
*/
index: function( obj ) {
@@ -351,6 +360,7 @@ jQuery.fn = jQuery.prototype = {
* @example $("img").attr("src");
* @before
* @result test.jpg
+ * @desc Returns the src attribute from the first image in the document.
*
* @name attr
* @type Object
@@ -359,17 +369,19 @@ jQuery.fn = jQuery.prototype = {
*/
/**
- * Set a hash of key/value object properties to all matched elements.
+ * Set a key/value object as properties to all matched elements.
+ *
* This serves as the best way to set a large number of properties
* on all matched elements.
*
* @example $("img").attr({ src: "test.jpg", alt: "Test Image" });
* @before
* @result
+ * @desc Sets src and alt attributes to all images.
*
* @name attr
* @type jQuery
- * @param Hash prop A set of key/value pairs to set as object properties.
+ * @param Map properties Key/value pairs to set as object properties.
* @cat DOM
*/
@@ -377,12 +389,13 @@ jQuery.fn = jQuery.prototype = {
* Set a single property to a value, on all matched elements.
*
* Note that you can't set the name property of input elements in IE.
- * Use $(html) or $().append(html) or $().html(html) to create elements
+ * Use $(html) or .append(html) or .html(html) to create elements
* on the fly including the name property.
*
* @example $("img").attr("src","test.jpg");
* @before
* @result
+ * @desc Sets src attribute to all images.
*
* @name attr
* @type jQuery
@@ -422,37 +435,34 @@ jQuery.fn = jQuery.prototype = {
*
* @example $("p").css("color");
* @before Test Paragraph.
- * @result red
+ * @result "red"
* @desc Retrieves the color style of the first paragraph
*
- * @example $("p").css("fontWeight");
+ * @example $("p").css("font-weight");
* @before Test Paragraph.
- * @result bold
+ * @result "bold"
* @desc Retrieves the font-weight style of the first paragraph.
- * Note that for all style properties with a dash (like 'font-weight'), you have to
- * write it in camelCase. In other words: Every time you have a '-' in a
- * property, remove it and replace the next character with an uppercase
- * representation of itself. Eg. fontWeight, fontSize, fontFamily, borderWidth,
- * borderStyle, borderBottomWidth etc.
*
* @name css
- * @type Object
+ * @type String
* @param String name The name of the property to access.
* @cat CSS
*/
/**
- * Set a hash of key/value style properties to all matched elements.
+ * Set a key/value object as style properties to all matched elements.
+ *
* This serves as the best way to set a large number of style properties
* on all matched elements.
*
* @example $("p").css({ color: "red", background: "blue" });
* @before Test Paragraph.
* @result Test Paragraph.
+ * @desc Sets color and background styles to all p elements.
*
* @name css
* @type jQuery
- * @param Hash prop A set of key/value pairs to set as style properties.
+ * @param Map properties Key/value pairs to set as style properties.
* @cat CSS
*/
@@ -475,13 +485,14 @@ jQuery.fn = jQuery.prototype = {
},
/**
- * Retrieve the text contents of all matched elements. The result is
+ * Get the text contents of all matched elements. The result is
* a string that contains the combined text contents of all matched
* elements. This method works on both HTML and XML documents.
*
* @example $("p").text();
- * @before Test Paragraph.
- * @result Test Paragraph.
+ * @before Test Paragraph.
Paraparagraph
+ * @result Test Paragraph.Paraparagraph
+ * @desc Gets the concatenated text of all paragraphs
*
* @name text
* @type String
@@ -490,16 +501,16 @@ jQuery.fn = jQuery.prototype = {
/**
* Set the text contents of all matched elements. This has the same
- * effect as calling .html() with your specified string.
+ * effect as html().
*
* @example $("p").text("Some new text.");
* @before Test Paragraph.
* @result Some new text.
- *
- * @param String val The text value to set the contents of the element to.
+ * @desc Sets the text of all paragraphs.
*
* @name text
* @type String
+ * @param String val The text value to set the contents of the element to.
* @cat DOM
*/
text: function(e) {
@@ -563,7 +574,7 @@ jQuery.fn = jQuery.prototype = {
*
* @name wrap
* @type jQuery
- * @param Element elem A DOM element that will be wrapped.
+ * @param Element elem A DOM element that will be wrapped around the target.
* @cat DOM/Manipulation
*/
wrap: function() {
@@ -588,49 +599,33 @@ jQuery.fn = jQuery.prototype = {
},
/**
- * Append any number of elements to the inside of every matched elements,
- * generated from the provided HTML.
+ * Append content to the inside of every matched element.
+ *
* This operation is similar to doing an appendChild to all the
* specified elements, adding them into the document.
*
* @example $("p").append("Hello");
* @before I would like to say:
* @result I would like to say: Hello
- *
- * @name append
- * @type jQuery
- * @param String html A string of HTML, that will be created on the fly and appended to the target.
- * @cat DOM/Manipulation
- */
-
- /**
- * Append an element to the inside of all matched elements.
- * This operation is similar to doing an appendChild to all the
- * specified elements, adding them into the document.
+ * @desc Appends some HTML to all paragraphs.
*
* @example $("p").append( $("#foo")[0] );
* @before I would like to say:
Hello
* @result I would like to say: Hello
- *
- * @name append
- * @type jQuery
- * @param Element elem A DOM element that will be appended.
- * @cat DOM/Manipulation
- */
-
- /**
- * Append any number of elements to the inside of all matched elements.
- * This operation is similar to doing an appendChild to all the
- * specified elements, adding them into the document.
+ * @desc Appends an Element to all paragraphs.
*
* @example $("p").append( $("b") );
* @before I would like to say:
Hello
* @result I would like to say: Hello
+ * @desc Appends a jQuery object (similar to an Array of DOM Elements) to all paragraphs.
*
* @name append
* @type jQuery
- * @param Array elems An array of elements, all of which will be appended.
+ * @param content Content to append to the target
* @cat DOM/Manipulation
+ * @see prepend()
+ * @see before()
+ * @see after()
*/
append: function() {
return this.domManip(arguments, true, 1, function(a){
@@ -639,94 +634,65 @@ jQuery.fn = jQuery.prototype = {
},
/**
- * Prepend any number of elements to the inside of every matched elements,
- * generated from the provided HTML.
- * This operation is the best way to insert dynamically created elements
- * inside, at the beginning, of all the matched element.
+ * Prepend content to the inside of every matched element.
+ *
+ * This operation is the best way to insert elements
+ * inside, at the beginning, of all matched elements.
*
* @example $("p").prepend("Hello");
* @before I would like to say:
* @result HelloI would like to say:
- *
- * @name prepend
- * @type jQuery
- * @param String html A string of HTML, that will be created on the fly and appended to the target.
- * @cat DOM/Manipulation
- */
-
- /**
- * Prepend an element to the inside of all matched elements.
- * This operation is the best way to insert an element inside, at the
- * beginning, of all the matched element.
+ * @desc Prepends some HTML to all paragraphs.
*
* @example $("p").prepend( $("#foo")[0] );
* @before I would like to say:
Hello
* @result HelloI would like to say:
- *
- * @name prepend
- * @type jQuery
- * @param Element elem A DOM element that will be appended.
- * @cat DOM/Manipulation
- */
-
- /**
- * Prepend any number of elements to the inside of all matched elements.
- * This operation is the best way to insert a set of elements inside, at the
- * beginning, of all the matched element.
- *
+ * @desc Prepends an Element to all paragraphs.
+ *
* @example $("p").prepend( $("b") );
* @before I would like to say:
Hello
* @result HelloI would like to say:
+ * @desc Prepends a jQuery object (similar to an Array of DOM Elements) to all paragraphs.
*
* @name prepend
* @type jQuery
- * @param Array elems An array of elements, all of which will be appended.
+ * @param content Content to prepend to the target.
* @cat DOM/Manipulation
+ * @see append()
+ * @see before()
+ * @see after()
*/
prepend: function() {
return this.domManip(arguments, true, -1, function(a){
this.insertBefore( a, this.firstChild );
});
},
-
+
/**
- * Insert any number of dynamically generated elements before each of the
- * matched elements.
+ * Insert content before each of the matched elements.
*
* @example $("p").before("Hello");
* @before I would like to say:
* @result HelloI would like to say:
- *
- * @name before
- * @type jQuery
- * @param String html A string of HTML, that will be created on the fly and appended to the target.
- * @cat DOM/Manipulation
- */
-
- /**
- * Insert an element before each of the matched elements.
+ * @desc Inserts some HTML before all paragraphs.
*
* @example $("p").before( $("#foo")[0] );
* @before I would like to say:
Hello
* @result HelloI would like to say:
- *
- * @name before
- * @type jQuery
- * @param Element elem A DOM element that will be appended.
- * @cat DOM/Manipulation
- */
-
- /**
- * Insert any number of elements before each of the matched elements.
+ * @desc Inserts an Element before all paragraphs.
*
* @example $("p").before( $("b") );
* @before I would like to say:
Hello
* @result HelloI would like to say:
+ * @desc Inserts a jQuery object (similar to an Array of DOM Elements) before all paragraphs.
*
* @name before
* @type jQuery
- * @param Array elems An array of elements, all of which will be appended.
+ * @param content Content to insert before each target.
* @cat DOM/Manipulation
+ * @see append()
+ * @see prepend()
+ * @see after()
*/
before: function() {
return this.domManip(arguments, false, 1, function(a){
@@ -735,43 +701,30 @@ jQuery.fn = jQuery.prototype = {
},
/**
- * Insert any number of dynamically generated elements after each of the
- * matched elements.
+ * Insert content after each of the matched elements.
*
* @example $("p").after("Hello");
* @before I would like to say:
* @result I would like to say:
Hello
- *
- * @name after
- * @type jQuery
- * @param String html A string of HTML, that will be created on the fly and appended to the target.
- * @cat DOM/Manipulation
- */
-
- /**
- * Insert an element after each of the matched elements.
+ * @desc Inserts some HTML after all paragraphs.
*
* @example $("p").after( $("#foo")[0] );
* @before HelloI would like to say:
* @result I would like to say:
Hello
- *
- * @name after
- * @type jQuery
- * @param Element elem A DOM element that will be appended.
- * @cat DOM/Manipulation
- */
-
- /**
- * Insert any number of elements after each of the matched elements.
+ * @desc Inserts an Element after all paragraphs.
*
* @example $("p").after( $("b") );
* @before HelloI would like to say:
* @result I would like to say:
Hello
+ * @desc Inserts a jQuery object (similar to an Array of DOM Elements) after all paragraphs.
*
* @name after
* @type jQuery
- * @param Array elems An array of elements, all of which will be appended.
+ * @param content Content to insert after each target.
* @cat DOM/Manipulation
+ * @see append()
+ * @see prepend()
+ * @see before()
*/
after: function() {
return this.domManip(arguments, false, -1, function(a){
@@ -784,23 +737,26 @@ jQuery.fn = jQuery.prototype = {
* back to its previous state. After an end operation, the list of matched elements will
* revert to the last state of matched elements.
*
+ * If there was no destructive operation before, an empty set is returned.
+ *
* @example $("p").find("span").end();
* @before Hello, how are you?
- * @result $("p").find("span").end() == [ ...
]
+ * @result [ ...
]
+ * desc Selects all paragraphs, finds span elements inside these, and reverts the
+ * selection back to the paragraphs.
*
* @name end
* @type jQuery
* @cat DOM/Traversing
*/
end: function() {
- if( !(this.stack && this.stack.length) )
- return this;
- return this.set( this.stack.pop() );
+ return this.prevObject || jQuery([]);
},
/**
* Searches for all elements that match the specified expression.
- * This method is the optimal way of finding additional descendant
+
+ * This method is a good way to find additional descendant
* elements with which to process.
*
* All searching is done using a jQuery expression. The expression can be
@@ -808,7 +764,9 @@ jQuery.fn = jQuery.prototype = {
*
* @example $("p").find("span");
* @before Hello, how are you?
- * @result $("p").find("span") == [ Hello ]
+ * @result [ Hello ]
+ * @desc Starts with all paragraphs and searches for descendant span
+ * elements, same as $("p span")
*
* @name find
* @type jQuery
@@ -816,70 +774,74 @@ jQuery.fn = jQuery.prototype = {
* @cat DOM/Traversing
*/
find: function(t) {
- return this.pushStack( jQuery.map( this, function(a){
+ return this.set( jQuery.map( this, function(a){
return jQuery.find(t,a);
- }), arguments );
+ }) );
},
/**
- * Create cloned copies of all matched DOM Elements. This does
- * not create a cloned copy of this particular jQuery object,
- * instead it creates duplicate copies of all DOM Elements.
+ * Clone matched DOM Elements and select the clones.
+ *
* This is useful for moving copies of the elements to another
* location in the DOM.
*
* @example $("b").clone().prependTo("p");
* @before Hello, how are you?
* @result HelloHello, how are you?
+ * @desc Clones all b elements (and selects the clones) and prepends them to all paragraphs.
*
* @name clone
* @type jQuery
* @cat DOM/Manipulation
*/
clone: function(deep) {
- return this.pushStack( jQuery.map( this, function(a){
+ return this.set( jQuery.map( this, function(a){
return a.cloneNode( deep != undefined ? deep : true );
- }), arguments );
+ }) );
},
/**
* Removes all elements from the set of matched elements that do not
- * match the specified expression. This method is used to narrow down
+ * match the specified expression(s). This method is used to narrow down
* the results of a search.
*
- * All searching is done using a jQuery expression. The expression
- * can be written using CSS 1-3 Selector syntax, or basic XPath.
+ * Provide a String array of expressions to apply multiple filters at once.
*
* @example $("p").filter(".selected")
* @before Hello
How are you?
- * @result $("p").filter(".selected") == [ Hello
]
+ * @result [ Hello
]
+ * @desc Selects all paragraphs and removes those without a class "selected".
+ *
+ * @example $("p").filter([".selected", ":first"])
+ * @before Hello
Hello Again
And Again
+ * @result [ Hello
, And Again
]
+ * @desc Selects all paragraphs and removes those without class "selected" and being the first one.
*
* @name filter
* @type jQuery
- * @param String expr An expression to search with.
+ * @param String|Array expression Expression(s) to search with.
* @cat DOM/Traversing
*/
-
+
/**
* Removes all elements from the set of matched elements that do not
- * match at least one of the expressions passed to the function. This
- * method is used when you want to filter the set of matched elements
- * through more than one expression.
- *
- * Elements will be retained in the jQuery object if they match at
- * least one of the expressions passed.
+ * pass the specified filter. This method is used to narrow down
+ * the results of a search.
*
- * @example $("p").filter([".selected", ":first"])
- * @before Hello
Hello Again
And Again
- * @result $("p").filter([".selected", ":first"]) == [ Hello
, And Again
]
+ * @example $("p").filter(function(index) {
+ * return $("ol", this).length == 0;
+ * })
+ * @before - Hello
How are you?
+ * @result [ How are you?
]
+ * @desc Remove all elements that have a child ol element
*
* @name filter
* @type jQuery
- * @param Array exprs A set of expressions to evaluate against
+ * @param Function filter A function to use for filtering
* @cat DOM/Traversing
*/
filter: function(t) {
- return this.pushStack(
+ return this.set(
t.constructor == Array &&
jQuery.map(this,function(a){
for ( var i = 0, tl = t.length; i < tl; i++ )
@@ -892,18 +854,19 @@ jQuery.fn = jQuery.prototype = {
( t ? this.get() : [] ) ||
typeof t == "function" &&
- jQuery.grep( this, t ) ||
+ jQuery.grep( this, function(el, index) { return t.apply(el, [index]) }) ||
- jQuery.filter(t,this).r, arguments );
+ jQuery.filter(t,this).r );
},
/**
* Removes the specified Element from the set of matched elements. This
* method is used to remove a single Element from a jQuery object.
*
- * @example $("p").not( document.getElementById("selected") )
+ * @example $("p").not( $("#selected")[0] )
* @before Hello
Hello Again
* @result [ Hello
]
+ * @desc Removes the element with the ID "selected" from the set of all paragraphs.
*
* @name not
* @type jQuery
@@ -919,6 +882,7 @@ jQuery.fn = jQuery.prototype = {
* @example $("p").not("#selected")
* @before Hello
Hello Again
* @result [ Hello
]
+ * @desc Removes the element with the ID "selected" from the set of all paragraphs.
*
* @name not
* @type jQuery
@@ -926,9 +890,9 @@ jQuery.fn = jQuery.prototype = {
* @cat DOM/Traversing
*/
not: function(t) {
- return this.pushStack( typeof t == "string" ?
+ return this.set( typeof t == "string" ?
jQuery.filter(t,this,true).r :
- jQuery.grep(this,function(a){ return a != t; }), arguments );
+ jQuery.grep(this,function(a){ return a != t; }) );
},
/**
@@ -946,44 +910,39 @@ jQuery.fn = jQuery.prototype = {
*/
/**
- * Adds each of the Elements in the array to the set of matched elements.
- * This is used to add a set of Elements to a jQuery object.
- *
- * @example $("p").add([document.getElementById("a"), document.getElementById("b")])
- * @before Hello
Hello AgainAnd Again
- * @result [ Hello
, Hello Again, And Again ]
+ * Adds one or more Elements to the set of matched elements.
*
- * @name add
- * @type jQuery
- * @param Array els An array of Elements to add
- * @cat DOM/Traversing
- */
-
- /**
- * Adds a single Element to the set of matched elements. This is used to
- * add a single Element to a jQuery object.
+ * This is used to add a set of Elements to a jQuery object.
*
* @example $("p").add( document.getElementById("a") )
* @before Hello
Hello Again
* @result [ Hello
, Hello Again ]
*
+ * @example $("p").add([document.getElementById("a"), document.getElementById("b")])
+ * @before Hello
Hello AgainAnd Again
+ * @result [ Hello
, Hello Again, And Again ]
+ *
* @name add
* @type jQuery
- * @param Element el An Element to add
+ * @param Element|Array elements One or more Elements to add
* @cat DOM/Traversing
*/
add: function(t) {
- return this.pushStack( jQuery.merge(
+ return this.set( jQuery.merge(
this.get(), typeof t == "string" ?
jQuery.find(t) :
- t.constructor == Array ? t : [t] ), arguments );
+ t.constructor == Array ? t : [t] ) );
},
/**
* Checks the current selection against an expression and returns true,
* if at least one element of the selection fits the given expression.
+ *
* Does return false, if no element fits or the expression is not valid.
*
+ * filter(String) is used internally, therefore all rules that apply there
+ * apply here, too.
+ *
* @example $("input[@type='checkbox']").parent().is("form")
* @before
* @result true
@@ -994,11 +953,6 @@ jQuery.fn = jQuery.prototype = {
* @result false
* @desc Returns false, because the parent of the input is a p element
*
- * @example $("form").is(null)
- * @before
- * @result false
- * @desc An invalid expression always returns false.
- *
* @name is
* @type Boolean
* @param String expr The expression with which to filter
@@ -1034,40 +988,6 @@ jQuery.fn = jQuery.prototype = {
fn.apply( obj, [ clone ? a[i].cloneNode(true) : a[i] ] );
});
- },
-
- /**
- *
- *
- * @private
- * @name pushStack
- * @param Array a
- * @param Array args
- * @type jQuery
- * @cat Core
- */
- pushStack: function(a,args) {
- var fn = args && args.length > 1 && args[args.length-1];
- var fn2 = args && args.length > 2 && args[args.length-2];
-
- if ( fn && fn.constructor != Function ) fn = null;
- if ( fn2 && fn2.constructor != Function ) fn2 = null;
-
- if ( !fn ) {
- if ( !this.stack ) this.stack = [];
- this.stack.push( this.get() );
- this.set( a );
- } else {
- var old = this.get();
- this.set( a );
-
- if ( fn2 && a.length || !fn2 )
- this.each( fn2 || fn ).set( old );
- else
- this.set( old ).each( fn );
- }
-
- return this;
}
};
@@ -1078,7 +998,7 @@ jQuery.fn = jQuery.prototype = {
* @example jQuery.fn.extend({
* check: function() {
* return this.each(function() { this.checked = true; });
- * ),
+ * },
* uncheck: function() {
* return this.each(function() { this.checked = false; });
* }
@@ -1143,6 +1063,24 @@ jQuery.extend = jQuery.fn.extend = function() {
jQuery.extend({
/**
+ * Run this function to give control of the $ variable back
+ * to whichever library first implemented it. This helps to make
+ * sure that jQuery doesn't conflict with the $ object
+ * of other libraries.
+ *
+ * By using this function, you will only be able to access jQuery
+ * using the 'jQuery' variable. For example, where you use to do
+ * $("div p"), you now must do jQuery("div p").
+ *
+ * @name noConflict
+ * @type undefined
+ * @cat Core
+ */
+ noConflict: function(){
+ $ = jQuery._$;
+ },
+
+ /**
* @private
* @name init
* @type undefined
@@ -1156,7 +1094,7 @@ jQuery.extend({
var ret = jQuery.map(this,n);
if ( a && typeof a == "string" )
ret = jQuery.filter(a,ret).r;
- return this.pushStack( ret, arguments );
+ return this.set( ret );
};
});
@@ -1210,12 +1148,12 @@ jQuery.extend({
* @example $.each( [0,1,2], function(i){
* alert( "Item #" + i + ": " + this );
* });
- * @desc This is an example of iterating over the items in an array, accessing both the current item and its index.
+ * @desc Iterates over the items in an array, accessing both the current item and its index.
*
* @example $.each( { name: "John", lang: "JS" }, function(i){
* alert( "Name: " + i + ", Value: " + this );
* });
- * @desc This is an example of iterating over the properties in an Object, accessing both the current item and its key.
+ * @desc Iterates over the properties in an Object, accessing both the current item and its key.
*
* @name $.each
* @param Object obj The object, or array, to iterate over.
@@ -1398,336 +1336,7 @@ jQuery.extend({
return r;
},
-
- /**
- * A handy, and fast, way to traverse in a particular direction and find
- * a specific element.
- *
- * @private
- * @name $.nth
- * @type DOMElement
- * @param DOMElement cur The element to search from.
- * @param Number|String num The Nth result to match. Can be a number or a string (like 'even' or 'odd').
- * @param String dir The direction to move in (pass in something like 'previousSibling' or 'nextSibling').
- * @cat DOM/Traversing
- */
- nth: function(cur,result,dir){
- result = result || 1;
- var num = 0;
- for ( ; cur; cur = cur[dir] ) {
- if ( cur.nodeType == 1 ) num++;
- if ( num == result || result == "even" && num % 2 == 0 && num > 1 ||
- result == "odd" && num % 2 == 1 ) return cur;
- }
- },
-
- expr: {
- "": "m[2]== '*'||a.nodeName.toUpperCase()==m[2].toUpperCase()",
- "#": "a.getAttribute('id')==m[2]",
- ":": {
- // Position Checks
- lt: "im[3]-0",
- nth: "m[3]-0==i",
- eq: "m[3]-0==i",
- first: "i==0",
- last: "i==r.length-1",
- even: "i%2==0",
- odd: "i%2",
-
- // Child Checks
- "nth-child": "jQuery.nth(a.parentNode.firstChild,m[3],'nextSibling')==a",
- "first-child": "jQuery.nth(a.parentNode.firstChild,1,'nextSibling')==a",
- "last-child": "jQuery.nth(a.parentNode.lastChild,1,'previousSibling')==a",
- "only-child": "jQuery.sibling(a.parentNode.firstChild).length==1",
-
- // Parent Checks
- parent: "a.childNodes.length",
- empty: "!a.childNodes.length",
-
- // Text Check
- contains: "jQuery.fn.text.apply([a]).indexOf(m[3])>=0",
-
- // Visibility
- visible: "a.type!='hidden'&&jQuery.css(a,'display')!='none'&&jQuery.css(a,'visibility')!='hidden'",
- hidden: "a.type=='hidden'||jQuery.css(a,'display')=='none'||jQuery.css(a,'visibility')=='hidden'",
-
- // Form attributes
- enabled: "!a.disabled",
- disabled: "a.disabled",
- checked: "a.checked",
- selected: "a.selected || jQuery.attr(a, 'selected')",
-
- // Form elements
- text: "a.type=='text'",
- radio: "a.type=='radio'",
- checkbox: "a.type=='checkbox'",
- file: "a.type=='file'",
- password: "a.type=='password'",
- submit: "a.type=='submit'",
- image: "a.type=='image'",
- reset: "a.type=='reset'",
- button: "a.type=='button'||a.nodeName=='BUTTON'",
- input: "/input|select|textarea|button/i.test(a.nodeName)"
- },
- ".": "jQuery.className.has(a,m[2])",
- "@": {
- "=": "z==m[4]",
- "!=": "z!=m[4]",
- "^=": "z && !z.indexOf(m[4])",
- "$=": "z && z.substr(z.length - m[4].length,m[4].length)==m[4]",
- "*=": "z && z.indexOf(m[4])>=0",
- "": "z",
- _resort: function(m){
- return ["", m[1], m[3], m[2], m[5]];
- },
- _prefix: "z=jQuery.attr(a,m[3]);"
- },
- "[": "jQuery.find(m[2],a).length"
- },
-
- /**
- * All elements on a specified axis.
- *
- * @private
- * @name $.sibling
- * @type Array
- * @param Element elem The element to find all the siblings of (including itself).
- * @cat DOM/Traversing
- */
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType == 1 && (!elem || n != elem) )
- r.push( n );
- }
-
- return r;
- },
-
- token: [
- "\\.\\.|/\\.\\.", "a.parentNode",
- ">|/", "jQuery.sibling(a.firstChild)",
- "\\+", "jQuery.nth(a,2,'nextSibling')",
- "~", function(a){
- var s = jQuery.sibling(a.parentNode.firstChild);
- return s.slice(0, jQuery.inArray(a,s));
- }
- ],
-
- /**
- * @name $.find
- * @type Array
- * @private
- * @cat Core
- */
- find: function( t, context ) {
- // Quickly handle non-string expressions
- if ( typeof t != "string" )
- return [ t ];
-
- // Make sure that the context is a DOM Element
- if ( context && context.nodeType == undefined )
- context = null;
-
- // Set the correct context (if none is provided)
- context = context || document;
-
- // Handle the common XPath // expression
- if ( !t.indexOf("//") ) {
- context = context.documentElement;
- t = t.substr(2,t.length);
-
- // And the / root expression
- } else if ( !t.indexOf("/") ) {
- context = context.documentElement;
- t = t.substr(1,t.length);
- if ( t.indexOf("/") >= 1 )
- t = t.substr(t.indexOf("/"),t.length);
- }
-
- // Initialize the search
- var ret = [context], done = [], last = null;
-
- // Continue while a selector expression exists, and while
- // we're no longer looping upon ourselves
- while ( t && last != t ) {
- var r = [];
- last = t;
-
- t = jQuery.trim(t).replace( /^\/\//i, "" );
-
- var foundToken = false;
-
- // An attempt at speeding up child selectors that
- // point to a specific element tag
- var re = /^[\/>]\s*([a-z0-9*-]+)/i;
- var m = re.exec(t);
-
- if ( m ) {
- // Perform our own iteration and filter
- for ( var i = 0, rl = ret.length; i < rl; i++ )
- for ( var c = ret[i].firstChild; c; c = c.nextSibling )
- if ( c.nodeType == 1 && ( c.nodeName == m[1].toUpperCase() || m[1] == "*" ) )
- r.push( c );
-
- ret = r;
- t = jQuery.trim( t.replace( re, "" ) );
- foundToken = true;
- } else {
- // Look for pre-defined expression tokens
- for ( var i = 0; i < jQuery.token.length; i += 2 ) {
- // Attempt to match each, individual, token in
- // the specified order
- var re = new RegExp("^(" + jQuery.token[i] + ")");
- var m = re.exec(t);
-
- // If the token match was found
- if ( m ) {
- // Map it against the token's handler
- r = ret = jQuery.map( ret, jQuery.token[i+1].constructor == Function ?
- jQuery.token[i+1] :
- function(a){ return eval(jQuery.token[i+1]); });
-
- // And remove the token
- t = jQuery.trim( t.replace( re, "" ) );
- foundToken = true;
- break;
- }
- }
- }
-
- // See if there's still an expression, and that we haven't already
- // matched a token
- if ( t && !foundToken ) {
- // Handle multiple expressions
- if ( !t.indexOf(",") || !t.indexOf("|") ) {
- // Clean teh result set
- if ( ret[0] == context ) ret.shift();
-
- // Merge the result sets
- jQuery.merge( done, ret );
-
- // Reset the context
- r = ret = [context];
-
- // Touch up the selector string
- t = " " + t.substr(1,t.length);
-
- } else {
- // Optomize for the case nodeName#idName
- var re2 = /^([a-z0-9_-]+)(#)([a-z0-9\\*_-]*)/i;
- var m = re2.exec(t);
-
- // Re-organize the results, so that they're consistent
- if ( m ) {
- m = [ 0, m[2], m[3], m[1] ];
-
- } else {
- // Otherwise, do a traditional filter check for
- // ID, class, and element selectors
- re2 = /^([#.]?)([a-z0-9\\*_-]*)/i;
- m = re2.exec(t);
- }
-
- // Try to do a global search by ID, where we can
- if ( m[1] == "#" && ret[ret.length-1].getElementById ) {
- // Optimization for HTML document case
- var oid = ret[ret.length-1].getElementById(m[2]);
-
- // Do a quick check for node name (where applicable) so
- // that div#foo searches will be really fast
- ret = r = oid &&
- (!m[3] || oid.nodeName == m[3].toUpperCase()) ? [oid] : [];
-
- // Use the DOM 0 shortcut for the body element
- } else if ( m[1] == "" && m[2] == "body" ) {
- ret = r = [ document.body ];
-
- } else {
- // Pre-compile a regular expression to handle class searches
- if ( m[1] == "." )
- var rec = new RegExp("(^|\\s)" + m[2] + "(\\s|$)");
-
- // We need to find all descendant elements, it is more
- // efficient to use getAll() when we are already further down
- // the tree - we try to recognize that here
- for ( var i = 0, rl = ret.length; i < rl; i++ )
- jQuery.merge( r,
- m[1] != "" && ret.length != 1 ?
- jQuery.getAll( ret[i], [], m[1], m[2], rec ) :
- ret[i].getElementsByTagName( m[1] != "" || m[0] == "" ? "*" : m[2] )
- );
-
- // It's faster to filter by class and be done with it
- if ( m[1] == "." && ret.length == 1 )
- r = jQuery.grep( r, function(e) {
- return rec.test(e.className);
- });
-
- // Same with ID filtering
- if ( m[1] == "#" && ret.length == 1 ) {
- // Remember, then wipe out, the result set
- var tmp = r;
- r = [];
-
- // Then try to find the element with the ID
- for ( var i = 0, tl = tmp.length; i < tl; i++ )
- if ( tmp[i].getAttribute("id") == m[2] ) {
- r = [ tmp[i] ];
- break;
- }
- }
-
- ret = r;
- }
-
- t = t.replace( re2, "" );
- }
-
- }
-
- // If a selector string still exists
- if ( t ) {
- // Attempt to filter it
- var val = jQuery.filter(t,r);
- ret = r = val.r;
- t = jQuery.trim(val.t);
- }
- }
-
- // Remove the root context
- if ( ret && ret[0] == context ) ret.shift();
-
- // And combine the results
- jQuery.merge( done, ret );
-
- return done;
- },
-
- getAll: function( o, r, token, name, re ) {
- for ( var s = o.firstChild; s; s = s.nextSibling )
- if ( s.nodeType == 1 ) {
- var add = true;
-
- if ( token == "." )
- add = s.className && re.test(s.className);
- else if ( token == "#" )
- add = s.getAttribute('id') == name;
- if ( add )
- r.push( s );
-
- if ( token == "#" && r.length ) break;
-
- if ( s.firstChild )
- jQuery.getAll( s, r, token, name, re );
- }
-
- return r;
- },
-
attr: function(elem, name, value){
var fix = {
"for": "htmlFor",
@@ -1781,84 +1390,7 @@ jQuery.extend({
return elem[name];
}
},
-
- // The regular expressions that power the parsing engine
- parse: [
- // Match: [@value='test'], [@foo]
- "\\[ *(@)S *([!*$^=]*) *('?\"?)(.*?)\\4 *\\]",
-
- // Match: [div], [div p]
- "(\\[)\\s*(.*?)\\s*\\]",
-
- // Match: :contains('foo')
- "(:)S\\(\"?'?([^\\)]*?)\"?'?\\)",
-
- // Match: :even, :last-chlid
- "([:.#]*)S"
- ],
-
- filter: function(t,r,not) {
- // Look for common filter expressions
- while ( t && /^[a-z[({<*:.#]/i.test(t) ) {
-
- var p = jQuery.parse;
-
- for ( var i = 0, pl = p.length; i < pl; i++ ) {
-
- // Look for, and replace, string-like sequences
- // and finally build a regexp out of it
- var re = new RegExp(
- "^" + p[i].replace("S", "([a-z*_-][a-z0-9_-]*)"), "i" );
-
- var m = re.exec( t );
-
- if ( m ) {
- // Re-organize the first match
- if ( jQuery.expr[ m[1] ]._resort )
- m = jQuery.expr[ m[1] ]._resort( m );
-
- // Remove what we just matched
- t = t.replace( re, "" );
-
- break;
- }
- }
-
- // :not() is a special case that can be optimized by
- // keeping it out of the expression list
- if ( m[1] == ":" && m[2] == "not" )
- r = jQuery.filter(m[3], r, true).r;
-
- // Handle classes as a special case (this will help to
- // improve the speed, as the regexp will only be compiled once)
- else if ( m[1] == "." ) {
-
- var re = new RegExp("(^|\\s)" + m[2] + "(\\s|$)");
- r = jQuery.grep( r, function(e){
- return re.test(e.className || '');
- }, not);
-
- // Otherwise, find the expression to execute
- } else {
- var f = jQuery.expr[m[1]];
- if ( typeof f != "string" )
- f = jQuery.expr[m[1]][m[2]];
-
- // Build a custom macro to enclose it
- eval("f = function(a,i){" +
- ( jQuery.expr[ m[1] ]._prefix || "" ) +
- "return " + f + "}");
-
- // Execute it against the current filter
- r = jQuery.grep( r, f, not );
- }
- }
-
- // Return an array of filtered elements (r)
- // and the modified expression string (t)
- return { r: r, t: t };
- },
-
+
/**
* Remove the whitespace from the beginning and end of a string.
*
@@ -1874,25 +1406,6 @@ jQuery.extend({
return t.replace(/^\s+|\s+$/g, "");
},
- /**
- * All ancestors of a given element.
- *
- * @private
- * @name $.parents
- * @type Array
- * @param Element elem The element to find the ancestors of.
- * @cat DOM/Traversing
- */
- parents: function( elem ){
- var matched = [];
- var cur = elem.parentNode;
- while ( cur && cur != document ) {
- matched.push( cur );
- cur = cur.parentNode;
- }
- return matched;
- },
-
makeArray: function( a ) {
var r = [];
@@ -1913,15 +1426,18 @@ jQuery.extend({
},
/**
- * Merge two arrays together, removing all duplicates. The final order
- * or the new array is: All the results from the first array, followed
+ * Merge two arrays together, removing all duplicates.
+ *
+ * The new array is: All the results from the first array, followed
* by the unique results from the second array.
*
* @example $.merge( [0,1,2], [2,3,4] )
* @result [0,1,2,3,4]
+ * @desc Merges two arrays, removing the duplicate 2
*
* @example $.merge( [3,2,1], [4,3,2] )
* @result [3,2,1,4]
+ * @desc Merges two arrays, removing the duplicates 3 and 2
*
* @name $.merge
* @type Array
@@ -1946,10 +1462,11 @@ jQuery.extend({
/**
* Filter items out of an array, by using a filter function.
+ *
* The specified function will be passed two arguments: The
* current array item and the index of the item in the array. The
- * function should return 'true' if you wish to keep the item in
- * the array, false if it should be removed.
+ * function must return 'true' to keep the item in the array,
+ * false to remove it.
*
* @example $.grep( [0,1,2], function(i){
* return i > 0;
@@ -1981,27 +1498,35 @@ jQuery.extend({
},
/**
- * Translate all items in an array to another array of items.
+ * Translate all items in an array to another array of items.
+ *
* The translation function that is provided to this method is
* called for each item in the array and is passed one argument:
- * The item to be translated. The function can then return:
- * The translated value, 'null' (to remove the item), or
- * an array of values - which will be flattened into the full array.
+ * The item to be translated.
+ *
+ * The function can then return the translated value, 'null'
+ * (to remove the item), or an array of values - which will
+ * be flattened into the full array.
*
* @example $.map( [0,1,2], function(i){
* return i + 4;
* });
* @result [4, 5, 6]
+ * @desc Maps the original array to a new one and adds 4 to each value.
*
* @example $.map( [0,1,2], function(i){
* return i > 0 ? i + 1 : null;
* });
* @result [2, 3]
+ * @desc Maps the original array to a new one and adds 1 to each
+ * value if it is bigger then zero, otherwise it's removed-
*
* @example $.map( [0,1,2], function(i){
* return [ i, i + 1 ];
* });
* @result [0, 1, 1, 2, 2, 3]
+ * @desc Maps the original array to a new one, each element is added
+ * with it's original value and the value plus one.
*
* @name $.map
* @type Array
@@ -2045,6 +1570,7 @@ jQuery.extend({
/**
* Contains flags for the useragent, read from navigator.userAgent.
* Available flags are: safari, opera, msie, mozilla
+ *
* This property is available before the DOM is ready, therefore you can
* use it to add ready events only for certain browsers.
*
@@ -2099,6 +1625,7 @@ jQuery.macros = {
* @example $("p").appendTo("#foo");
* @before I would like to say:
* @result
+ * @desc Appends all paragraphs to the element with the ID "foo"
*
* @name appendTo
* @type jQuery
@@ -2116,6 +1643,7 @@ jQuery.macros = {
* @example $("p").prependTo("#foo");
* @before I would like to say:
Hello
* @result I would like to say:
Hello
+ * @desc Prepends all paragraphs to the element with the ID "foo"
*
* @name prependTo
* @type jQuery
@@ -2133,6 +1661,7 @@ jQuery.macros = {
* @example $("p").insertBefore("#foo");
* @before Hello
I would like to say:
* @result I would like to say:
Hello
+ * @desc Same as $("#foo").before("p")
*
* @name insertBefore
* @type jQuery
@@ -2150,6 +1679,7 @@ jQuery.macros = {
* @example $("p").insertAfter("#foo");
* @before I would like to say:
Hello
* @result Hello
I would like to say:
+ * @desc Same as $("#foo").after("p")
*
* @name insertAfter
* @type jQuery
@@ -2671,26 +2201,21 @@ jQuery.macros = {
* Get a set of elements containing the unique parents of the matched
* set of elements.
*
+ * Can be filtered with an optional expressions.
+ *
* @example $("p").parent()
* @before
* @result [ ]
- *
- * @name parent
- * @type jQuery
- * @cat DOM/Traversing
- */
-
- /**
- * Get a set of elements containing the unique parents of the matched
- * set of elements, and filtered by an expression.
+ * @desc Find the parent element of each paragraph.
*
* @example $("p").parent(".selected")
* @before
* @result [ ]
+ * @desc Find the parent element of each paragraph with a class "selected".
*
* @name parent
* @type jQuery
- * @param String expr An expression to filter the parents with
+ * @param String expr (optional) An expression to filter the parents with
* @cat DOM/Traversing
*/
parent: "a.parentNode",
@@ -2699,26 +2224,21 @@ jQuery.macros = {
* Get a set of elements containing the unique ancestors of the matched
* set of elements (except for the root element).
*
+ * Can be filtered with an optional expressions.
+ *
* @example $("span").parents()
* @before
* @result [ ..., ...
, Hello
]
- *
- * @name parents
- * @type jQuery
- * @cat DOM/Traversing
- */
-
- /**
- * Get a set of elements containing the unique ancestors of the matched
- * set of elements, and filtered by an expression.
+ * @desc Find all parent elements of each span.
*
* @example $("span").parents("p")
* @before
* @result [ Hello
]
+ * @desc Find all parent elements of each span that is a paragraph.
*
* @name parents
* @type jQuery
- * @param String expr An expression to filter the ancestors with
+ * @param String expr (optional) An expression to filter the ancestors with
* @cat DOM/Traversing
*/
parents: jQuery.parents,
@@ -2729,28 +2249,21 @@ jQuery.macros = {
*
* It only returns the very next sibling, not all next siblings.
*
+ * Can be filtered with an optional expressions.
+ *
* @example $("p").next()
* @before Hello
Hello Again
And Again
* @result [ Hello Again
, And Again
]
- *
- * @name next
- * @type jQuery
- * @cat DOM/Traversing
- */
-
- /**
- * Get a set of elements containing the unique next siblings of each of the
- * matched set of elements, and filtered by an expression.
- *
- * It only returns the very next sibling, not all next siblings.
+ * @desc Find the very next sibling of each paragraph.
*
* @example $("p").next(".selected")
* @before Hello
Hello Again
And Again
* @result [ Hello Again
]
+ * @desc Find the very next sibling of each paragraph that has a class "selected".
*
* @name next
* @type jQuery
- * @param String expr An expression to filter the next Elements with
+ * @param String expr (optional) An expression to filter the next Elements with
* @cat DOM/Traversing
*/
next: "jQuery.nth(a,1,'nextSibling')",
@@ -2759,30 +2272,23 @@ jQuery.macros = {
* Get a set of elements containing the unique previous siblings of each of the
* matched set of elements.
*
+ * Can be filtered with an optional expressions.
+ *
* It only returns the immediately previous sibling, not all previous siblings.
*
* @example $("p").prev()
* @before Hello
Hello Again
And Again
* @result [ Hello Again
]
- *
- * @name prev
- * @type jQuery
- * @cat DOM/Traversing
- */
-
- /**
- * Get a set of elements containing the unique previous siblings of each of the
- * matched set of elements, and filtered by an expression.
- *
- * It only returns the immediately previous sibling, not all previous siblings.
+ * @desc Find the very previous sibling of each paragraph.
*
* @example $("p").prev(".selected")
* @before Hello
Hello Again
And Again
* @result [ Hello
]
+ * @desc Find the very previous sibling of each paragraph that has a class "selected".
*
* @name prev
* @type jQuery
- * @param String expr An expression to filter the previous Elements with
+ * @param String expr (optional) An expression to filter the previous Elements with
* @cat DOM/Traversing
*/
prev: "jQuery.nth(a,1,'previousSibling')",
@@ -2791,26 +2297,21 @@ jQuery.macros = {
* Get a set of elements containing all of the unique siblings of each of the
* matched set of elements.
*
+ * Can be filtered with an optional expressions.
+ *
* @example $("div").siblings()
* @before Hello
Hello Again
And Again
* @result [ Hello
, And Again
]
- *
- * @name siblings
- * @type jQuery
- * @cat DOM/Traversing
- */
-
- /**
- * Get a set of elements containing all of the unique siblings of each of the
- * matched set of elements, and filtered by an expression.
+ * @desc Find all siblings of each div.
*
* @example $("div").siblings(".selected")
* @before Hello
Hello Again
And Again
* @result [ Hello Again
]
+ * @desc Find all siblings with a class "selected" of each div.
*
* @name siblings
* @type jQuery
- * @param String expr An expression to filter the sibling Elements with
+ * @param String expr (optional) An expression to filter the sibling Elements with
* @cat DOM/Traversing
*/
siblings: "jQuery.sibling(a.parentNode.firstChild,a)",
@@ -2819,26 +2320,21 @@ jQuery.macros = {
* Get a set of elements containing all of the unique children of each of the
* matched set of elements.
*
+ * Can be filtered with an optional expressions.
+ *
* @example $("div").children()
* @before Hello
Hello Again
And Again
* @result [ Hello Again ]
- *
- * @name children
- * @type jQuery
- * @cat DOM/Traversing
- */
-
- /**
- * Get a set of elements containing all of the unique children of each of the
- * matched set of elements, and filtered by an expression.
+ * @desc Find all children of each div.
*
* @example $("div").children(".selected")
* @before HelloHello Again
And Again
* @result [ Hello Again
]
+ * @desc Find all children with a class "selected" of each div.
*
* @name children
* @type jQuery
- * @param String expr An expression to filter the child Elements with
+ * @param String expr (optional) An expression to filter the child Elements with
* @cat DOM/Traversing
*/
children: "jQuery.sibling(a.firstChild)"
@@ -2932,6 +2428,7 @@ jQuery.macros = {
* @type jQuery
* @param String class A CSS class to add to the elements
* @cat DOM
+ * @see removeClass(String)
*/
addClass: function(c){
jQuery.className.add(this,c);
@@ -2952,6 +2449,7 @@ jQuery.macros = {
* @type jQuery
* @param String class (optional) A CSS class to remove from the elements
* @cat DOM
+ * @see addClass(String)
*/
removeClass: function(c){
jQuery.className.remove(this,c);
@@ -2978,27 +2476,19 @@ jQuery.macros = {
* Removes all matched elements from the DOM. This does NOT remove them from the
* jQuery object, allowing you to use the matched elements further.
*
+ * Can be filtered with an optional expressions.
+ *
* @example $("p").remove();
* @before Hello
how are you?
* @result how are
*
- * @name remove
- * @type jQuery
- * @cat DOM/Manipulation
- */
-
- /**
- * Removes only elements (out of the list of matched elements) that match
- * the specified jQuery expression. This does NOT remove them from the
- * jQuery object, allowing you to use the matched elements further.
- *
* @example $("p").remove(".hello");
* @before Hello
how are you?
* @result how are you?
*
* @name remove
* @type jQuery
- * @param String expr A jQuery expression to filter elements by.
+ * @param String expr (optional) A jQuery expression to filter elements by.
* @cat DOM/Manipulation
*/
remove: function(a){
@@ -3017,7 +2507,7 @@ jQuery.macros = {
* @type jQuery
* @cat DOM/Manipulation
*/
- empty: function(){
+ empty: function() {
while ( this.firstChild )
this.removeChild( this.firstChild );
}