Test Paragraph.
X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fjquery%2Fjquery.js;h=97038331c668237e08f5eb331cc535aa8b38e219;hb=060c55bf043922401cb033117a3091ad24dbf047;hp=65732b8f7a0b9d7ccfa5e41d84cff7510081840d;hpb=97ea47492fe13ddb1108045c244d5af6570ace92;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index 65732b8..9703833 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -28,7 +28,7 @@ window.undefined = window.undefined; * @name jQuery * @cat Core */ -function jQuery(a,c) { +jQuery = function(a,c) { // Shortcut for document ready (because $(document).each() is silly) if ( a && a.constructor == Function && jQuery.fn.ready ) @@ -67,7 +67,7 @@ function jQuery(a,c) { // If so, execute it in context if ( fn && fn.constructor == Function ) this.each(fn); -} +}; // Map over the $ in case of overwrite if ( typeof $ != "undefined" ) @@ -127,9 +127,8 @@ if ( typeof $ != "undefined" ) * @before
one
two
three
* @result [two
] * - * @example $(document).ready( loaded ); - * @desc Executes the "loaded" function when the DOM is ready to - * be manipulated. + * @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. @@ -151,10 +150,15 @@ if ( typeof $ != "undefined" ) /** * A shorthand for $(document).ready(), allowing you to bind a function - * to be executed when the DOM document has finished loading. + * to be executed when the DOM document has finished loading. This function + * behaves just like $(document).ready(), in that it should be used to wrap + * all of the other $() operations on your page. While this function is, + * technically, chainable - there really isn't much use for chaining against it. * - * @example $( loaded ) - * @desc Executes the function "loaded" when the DOM is ready to be used. + * @example $(function(){ + * // Document is ready + * }); + * @desc Executes the function when the DOM is ready to be used. * * @name $ * @param Function fn The function to execute when the DOM is ready. @@ -163,11 +167,13 @@ if ( typeof $ != "undefined" ) */ /** - * A means of creating a duplicate copy of a jQuery object. + * A means of creating a cloned copy of a jQuery object. This function + * copies the set of matched elements from one jQuery object and creates + * another, new, jQuery object containing the same elements. * * @example var div = $("div"); - * $( div ).find("p") - * @desc Locates all p elements with all div elements, without disrupting the original jQuery object contained in 'div'. + * $( div ).find("p"); + * @desc Locates all p elements with all div elements, without disrupting the original jQuery object contained in 'div' (as would normally be the case if a simple div.find("p") was done). * * @name $ * @param jQuery obj The jQuery object to be cloned. @@ -197,7 +203,7 @@ jQuery.fn = jQuery.prototype = { * @beforeTest Paragraph.
* @result red + * @desc Retrieves the color style of the first paragraph + * + * @example $("p").css("fontWeight"); + * @beforeTest Paragraph.
+ * @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. * * @test ok( $('#foo').css("display") == 'block', 'Check for css property "display"'); * @@ -479,9 +511,9 @@ jQuery.fn = jQuery.prototype = { * @resultTest Paragraph.
* * @test ok( $('#foo').is(':visible'), 'Modifying CSS display: Assert element is visible'); - * $('#foo').css({display: 'none'}); + * @test $('#foo').css({display: 'none'}); * ok( !$('#foo').is(':visible'), 'Modified CSS display: Assert element is hidden'); - * $('#foo').css({display: 'block'}); + * @test $('#foo').css({display: 'block'}); * ok( $('#foo').is(':visible'), 'Modified CSS display: Assert element is visible'); * * @name css @@ -496,11 +528,13 @@ jQuery.fn = jQuery.prototype = { * @example $("p").css("color","red"); * @beforeTest Paragraph.
* @resultTest Paragraph.
+ * @desc Changes the color of all paragraphs to red + * * * @test ok( $('#foo').is(':visible'), 'Modifying CSS display: Assert element is visible'); - * $('#foo').css('display', 'none'); + * @test $('#foo').css('display', 'none'); * ok( !$('#foo').is(':visible'), 'Modified CSS display: Assert element is hidden'); - * $('#foo').css('display', 'block'); + * @test $('#foo').css('display', 'block'); * ok( $('#foo').is(':visible'), 'Modified CSS display: Assert element is visible'); * * @name css @@ -553,14 +587,17 @@ jQuery.fn = jQuery.prototype = { * and finds the deepest ancestor element within its * structure - it is that element that will en-wrap everything else. * + * This does not work with elements that contain text. Any necessary text + * must be added after the wrapping is done. + * * @example $("p").wrap(""); * @beforeTest Paragraph.
* @resultTest Paragraph.
Test Paragraph.
- * @resultTest Paragraph.
Test Paragraph.
+ * @resultTest Paragraph.
Hello
How are you?
* @result $("p").filter(".selected") == [Hello
] * + * @test isSet( $("input").filter(":checked").get(), q("radio2", "check1"), "Filter elements" ); + * * @name filter * @type jQuery * @param String expr An expression to search with. @@ -994,7 +1041,7 @@ jQuery.fn = jQuery.prototype = { * @example $("p").not("#selected") * @beforeHello
Hello Again
* @result [Hello
] - * @test cmpOK($("#main > p#ap > a").not("#google").length, "==", 2, ".not") + * @test ok($("#main > p#ap > a").not("#google").length == 2, ".not") * * @name not * @type jQuery @@ -1124,7 +1171,7 @@ jQuery.fn = jQuery.prototype = { return this.each(function(){ var obj = this; - if ( table && this.nodeName == "TABLE" && a[0].nodeName != "THEAD" ) { + if ( table && this.nodeName.toUpperCase() == "TABLE" && a[0].nodeName.toUpperCase() != "THEAD" ) { var tbody = this.getElementsByTagName("tbody"); if ( !tbody.length ) { @@ -1171,7 +1218,20 @@ jQuery.fn = jQuery.prototype = { }; /** - * + * Extends the jQuery object itself. Can be used to add both static + * functions and plugin methods. + * + * @example $.fn.extend({ + * check: function() { + * this.each(function() { this.checked = true; }); + * ), + * uncheck: function() { + * this.each(function() { this.checked = false; }); + * } + * }); + * $("input[@type=checkbox]").check(); + * $("input[@type=radio]").uncheck(); + * @desc Adds two plugin methods. * * @private * @name extend @@ -1271,11 +1331,23 @@ jQuery.extend({ /** * A generic iterator function, which can be used to seemlessly - * iterate over both objects and arrays. + * 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. + * + * @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. + * + * @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. * * @name $.each * @param Object obj The object, or array, to iterate over. - * @param Object fn The function that will be executed on every object. + * @param Function fn The function that will be executed on every object. * @type Object * @cat Javascript */ @@ -1469,9 +1541,9 @@ jQuery.extend({ "@": { "=": "z==m[4]", "!=": "z!=m[4]", - "^=": "!z.indexOf(m[4])", - "$=": "z.substr(z.length - m[4].length,m[4].length)==m[4]", - "*=": "z.indexOf(m[4])>=0", + "^=": "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" }, "[": "jQuery.find(m[2],a).length" @@ -1496,7 +1568,7 @@ jQuery.extend({ * @test t( "Element Selector", "div", ["main","foo"] ); * @test t( "Element Selector", "body", ["body"] ); * @test t( "Element Selector", "html", ["html"] ); - * @test cmpOK( $("*").size(), ">=", 30, "Element Selector" ); + * @test ok( $("*").size() >= 30, "Element Selector" ); * @test t( "Parent Element", "div div", ["foo"] ); * * @test t( "ID Selector", "#body", ["body"] ); @@ -1530,6 +1602,11 @@ jQuery.extend({ * @test t( "Attribute Exists", "a[@title]", ["google"] ); * @test t( "Attribute Exists", "*[@title]", ["google"] ); * @test t( "Attribute Exists", "[@title]", ["google"] ); + * + * @test t( "Non-existing part of attribute [@name*=bla]", "[@name*=bla]", [] ); + * @test t( "Non-existing start of attribute [@name^=bla]", "[@name^=bla]", [] ); + * @test t( "Non-existing end of attribute [@name$=bla]", "[@name$=bla]", [] ); + * * @test t( "Attribute Equals", "a[@rel='bookmark']", ["simon1"] ); * @test t( "Attribute Equals", 'a[@rel="bookmark"]', ["simon1"] ); * @test t( "Attribute Equals", "a[@rel=bookmark]", ["simon1"] ); @@ -1544,7 +1621,7 @@ jQuery.extend({ * @test t( "Last Child", "p:last-child", ["sap"] ); * @test t( "Only Child", "a:only-child", ["simon1","anchor1","yahoo","anchor2"] ); * @test t( "Empty", "ul:empty", ["firstUL"] ); - * @test t( "Enabled UI Element", "input:enabled", ["text1","radio1","radio2","check1","check2","hidden1","hidden2"] ); + * @test t( "Enabled UI Element", "input:enabled", ["text1","radio1","radio2","check1","check2","hidden1","hidden2","name"] ); * @test t( "Disabled UI Element", "input:disabled", ["text2"] ); * @test t( "Checked UI Element", "input:checked", ["radio2","check1"] ); * @test t( "Selected Option Element", "option:selected", ["option1a","option2d","option3b","option3c"] ); @@ -1553,7 +1630,7 @@ jQuery.extend({ * @test t( "Element Preceded By", "p ~ div", ["foo"] ); * @test t( "Not", "a.blog:not(.link)", ["mark"] ); * - * @test cmpOK( jQuery.find("//*").length, ">=", 30, "All Elements (//*)" ); + * @test ok( jQuery.find("//*").length >= 30, "All Elements (//*)" ); * @test t( "All Div Elements", "//div", ["main","foo"] ); * @test t( "Absolute Path", "/html/body", ["body"] ); * @test t( "Absolute Path w/ *", "/* /body", ["body"] ); @@ -1577,9 +1654,18 @@ jQuery.extend({ * @test t( "Position Greater Than", "p:gt(0)", ["ap","sndp","en","sap","first"] ); * @test t( "Position Less Than", "p:lt(3)", ["firstp","ap","sndp"] ); * @test t( "Is A Parent", "p:parent", ["firstp","ap","sndp","en","sap","first"] ); - * @test t( "Is Visible", "input:visible", ["text1","text2","radio1","radio2","check1","check2"] ); + * @test t( "Is Visible", "input:visible", ["text1","text2","radio1","radio2","check1","check2","name"] ); * @test t( "Is Hidden", "input:hidden", ["hidden1","hidden2"] ); * + * @test t( "Grouped Form Elements", "input[@name='foo[bar]']", ["hidden2"] ); + * + * @test t( "All Children of ID", "#foo/*", ["sndp", "en", "sap"] ); + * @test t( "All Children of ID with no children", "#firstUL/*", [] ); + * + * @test t( ":not() Existing attribute", "input:not([@name])", ["text2", "check2"]); + * @test t( ":not() Equals attribute", "select:not([@name=select1])", ["select2", "select3"]); + * @test t( ":not() Equals quoted attribute", "select:not([@name='select1'])", ["select2", "select3"]); + * * @name $.find * @type ArrayHello
And Again
* @result [Hello
,And Again
] * + * @test isSet( $("#en").siblings().get(), q("sndp", "sap"), "Check for siblings" ); + * * @name siblings * @type jQuery * @cat DOM/Traversing @@ -2845,12 +2978,15 @@ jQuery.macros = { * @beforeHello Again
And Again
* @result [Hello Again
] * + * @test isSet( $("#sndp").siblings("[code]").get(), q("sap"), "Check for filtered siblings (has code child element)" ); + * @test isSet( $("#sndp").siblings("[a]").get(), q("en", "sap"), "Check for filtered siblings (has anchor child element)" ); + * * @name siblings * @type jQuery * @param String expr An expression to filter the sibling Elements with * @cat DOM/Traversing */ - siblings: jQuery.sibling, + siblings: "jQuery.sibling(a, null, true)", /** @@ -3078,24 +3214,31 @@ jQuery.macros = { }, /** - * Binds a particular event (like click) to a each of a set of match elements. - * - * @example $("p").bind( "click", function() { alert("Hello"); } ) + * Binds a handler to a particular event (like click) for each matched element. + * The event handler is passed an event object that you can use to prevent + * default behaviour. To stop both default action and event bubbling, your handler + * has to return false. + * + * @example $("p").bind( "click", function() { + * alert( $(this).text() ); + * } ) * @beforeHello
- * @result [Hello
] - * - * Cancel a default action and prevent it from bubbling by returning false - * from your function. + * @result alert("Hello") * * @example $("form").bind( "submit", function() { return false; } ) + * @desc Cancel a default action and prevent it from bubbling by returning false + * from your function. * - * Cancel a default action by using the preventDefault method. - * - * @example $("form").bind( "submit", function() { e.preventDefault(); } ) + * @example $("form").bind( "submit", function(event) { + * event.preventDefault(); + * } ); + * @desc Cancel only the default action by using the preventDefault method. * - * Stop an event from bubbling by using the stopPropogation method. * - * @example $("form").bind( "submit", function() { e.stopPropogation(); } ) + * @example $("form").bind( "submit", function(event) { + * event.stopPropagation(); + * } ) + * @desc Stop only an event from bubbling by using the stopPropagation method. * * @name bind * @type jQuery