X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fjquery%2Fjquery.js;h=48740377ce0c991a39a81f318ee57ec8a433f986;hb=9791855ea91988e9ff02063e0c5ece759d8ba898;hp=933e97433b11eb31a7d036d2942502e907915404;hpb=0eb642cc1f515f6c072c9ed96dfd757cb44f1656;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index 933e974..4874037 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -38,7 +38,7 @@ var jQuery = function(a,c) { // Handle HTML strings if ( typeof a == "string" ) { // HANDLE: $(html) -> $(array) - var m = /^[^<]*(<(.|\n)+>)[^>]*$/.exec(a); + var m = /^[^<]*(<(.|\s)+>)[^>]*$/.exec(a); if ( m ) a = jQuery.clean( [ m[1] ] ); @@ -76,8 +76,12 @@ var $ = jQuery; * (usually consisting of CSS or XPath), which then finds all matching * elements. * - * By default, $() looks for DOM elements within the context of the - * current HTML document. + * By default, if no context is specified, $() looks for DOM elements within the context of the + * current HTML document. If you do specify a context, such as a DOM + * element or jQuery object, the expression will be matched against + * the contents of that context. + * + * See [[DOM/Traversing/Selectors]] for the allowed CSS/XPath syntax for expressions. * * @example $("div > p") * @desc Finds all p elements that are children of a div element. @@ -102,10 +106,10 @@ var $ = jQuery; /** * Create DOM elements on-the-fly from the provided String of raw HTML. * - * @example $("
Hello
Hello
add
,
+ * children
, clone
, filter
,
+ * find
, not
, next
,
+ * parent
, parents
, prev
and siblings
.
+ *
* @example $("p").find("span").end();
* @before Hello, how are you?
* @result [...
] @@ -824,7 +837,9 @@ jQuery.fn = jQuery.prototype = { */ clone: function(deep) { return this.pushStack( jQuery.map( this, function(a){ - return a.cloneNode( deep != undefined ? deep : true ); + var a = a.cloneNode( deep != undefined ? deep : true ); + a.$events = null; // drop $events expando to avoid firing incorrect events + return a; }) ); }, @@ -914,6 +929,9 @@ jQuery.fn = jQuery.prototype = { * of matched elements. This method is used to remove one or more * elements from a jQuery object. * + * Please note: the expression cannot use a reference to the + * element name. See the two examples below. + * * @example $("p").not( $("div p.selected") ) * @beforeHello
Hello Again
Hello
] @@ -942,8 +960,12 @@ jQuery.fn = jQuery.prototype = { * to the set of matched elements. * * @example $("p").add("span") - * @beforeHello
Hello Again - * @result [Hello
, Hello Again ] + * @before (HTML)Hello
Hello Again + * @result (jQuery object matching 2 elements) [Hello
, Hello Again ] + * @desc Compare the above result to the result of$('p')
,
+ * which would just result in [ Hello
]
.
+ * Using add(), matched elements of $('span')
are simply
+ * added to the returned jQuery-object.
*
* @name add
* @type jQuery
@@ -1020,7 +1042,14 @@ jQuery.fn = jQuery.prototype = {
},
/**
- * Get the current value of the first matched element.
+ * Get the content of the value attribute of the first matched element.
+ *
+ * Use caution when relying on this function to check the value of
+ * multiple-select elements and checkboxes in a form. While it will
+ * still work as intended, it may not accurately represent the value
+ * the server will receive because these elements may send an array
+ * of values. For more robust handling of field values, see the
+ * [http://www.malsup.com/jquery/form/#fields fieldValue function of the Form Plugin].
*
* @example $("input").val();
* @before
@@ -1032,7 +1061,7 @@ jQuery.fn = jQuery.prototype = {
*/
/**
- * Set the value of every matched element.
+ * Set the value attribute of every matched element.
*
* @example $("input").val("test");
* @before
@@ -1113,7 +1142,7 @@ jQuery.fn = jQuery.prototype = {
/**
* Extends the jQuery object itself. Can be used to add functions into
- * the jQuery namespace and to add plugin methods (plugins).
+ * the jQuery namespace and to [[Plugins/Authoring|add plugin methods]] (plugins).
*
* @example jQuery.fn.extend({
* check: function() {
@@ -1225,16 +1254,21 @@ jQuery.extend({
// This may seem like some crazy code, but trust me when I say that this
// is the only cross-browser way to do this. --John
isFunction: function( fn ) {
- return !!fn && typeof fn != "string" &&
+ return !!fn && typeof fn != "string" && !fn.nodeName &&
typeof fn[0] == "undefined" && /function/i.test( fn + "" );
},
+
+ // check if an element is in a XML document
+ isXMLDoc: function(elem) {
+ return elem.tagName && elem.ownerDocument && !elem.ownerDocument.body;
+ },
nodeName: function( elem, name ) {
return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
},
/**
- * A generic iterator function, which can be used to seemlessly
+ * A generic iterator function, which can be used to seamlessly
* iterate over both objects and arrays. This function is not the same
* as $().each() - which is used to iterate, exclusively, over a jQuery
* object. This function can be used to iterate over anything.
@@ -1275,16 +1309,15 @@ jQuery.extend({
prop: function(elem, value, type, index, prop){
// Handle executable functions
if ( jQuery.isFunction( value ) )
- return value.call( elem, [index] );
+ value = value.call( elem, [index] );
// exclude the following css properties to add px
var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i;
// Handle passing in a number to a CSS property
- if ( value.constructor == Number && type == "curCSS" && !exclude.test(prop) )
- return value + "px";
-
- return value;
+ return value && value.constructor == Number && type == "curCSS" && !exclude.test(prop) ?
+ value + "px" :
+ value;
},
className: {
@@ -1307,6 +1340,8 @@ jQuery.extend({
// internal only, use is(".class")
has: function( t, c ) {
t = t.className || t;
+ // escape regex characters
+ c = c.replace(/([\.\\\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g, "\\$1");
return t && new RegExp("(^|\\s)" + c + "(\\s|$)").test( t );
}
},
@@ -1437,7 +1472,7 @@ jQuery.extend({
[0,"",""];
// Go to html and back, then peel off extra wrappers
- div.innerHTML = wrap[1] + s + wrap[2];
+ div.innerHTML = wrap[1] + arg + wrap[2];
// Move to the right depth
while ( wrap[0]-- )
@@ -1460,13 +1495,15 @@ jQuery.extend({
}
- arg = div.childNodes;
+ arg = [];
+ for (var i=0, l=div.childNodes.length; iHello
Hello
@@ -1778,7 +1819,7 @@ new function() { * 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. + * The matched elements can be filtered with an optional expression. * * @example $("span").parents() * @beforeHello
Hello AgainHello
Hello Again
Hello
And Again
@@ -1870,7 +1912,8 @@ new function() { * 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. + * This set can be filtered with an optional expression that will cause + * only elements matching the selector to be collected. * * @example $("div").children() * @beforeHello
And Again
@@ -2223,7 +2266,7 @@ jQuery.each( [ "eq", "lt", "gt", "contains" ], function(i,n){ */ /** - * Set the CSS width of every matched element. If no explicit unit + * Set the CSS height of every matched element. If no explicit unit * was specified (like 'em' or '%') then "px" is added to the width. * * @example $("p").height(20);