X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjquery%2Fjquery.js;h=a0d8775177dd23b61fd5955d63c589267529f78d;hb=ca5b83c5c9619e12827f2e92adb6e6c5708df88e;hp=c3185bb5331c38080dbfd6dbed597f082bf13cf7;hpb=df11c1b76c8a0213be031d23d81e10ec4c28e658;p=jquery.git
diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js
index c3185bb..a0d8775 100644
--- a/src/jquery/jquery.js
+++ b/src/jquery/jquery.js
@@ -667,6 +667,12 @@ jQuery.fn = jQuery.prototype = {
* var result = $('#first').append('buga ');
* ok( result.text() == defaultText + 'buga', 'Check if text appending works' );
*
+ * @test reset();
+ * var expected = "Try them out: bla ";
+ * $('#first').append(" ");
+ * $('#first').append("bla ");
+ * ok( expected == $('#first').text(), "Check for appending of spaces" );
+ *
* @name append
* @type jQuery
* @param String html A string of HTML, that will be created on the fly and appended to the target.
@@ -1171,7 +1177,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 ) {
@@ -1218,7 +1224,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
@@ -1518,11 +1537,23 @@ jQuery.extend({
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 elements
+ // Form attributes
enabled: "!a.disabled",
disabled: "a.disabled",
checked: "a.checked",
- selected: "a.selected"
+ selected: "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'",
+ input: "a.nodeName.toLowerCase()=='input'||a.nodeName.toLowerCase()=='select'||a.nodeName.toLowerCase()=='textarea'"
},
".": "jQuery.className.has(a,m[2])",
"@": {
@@ -1649,6 +1680,15 @@ jQuery.extend({
* @test t( "All Children of ID", "#foo/*", ["sndp", "en", "sap"] );
* @test t( "All Children of ID with no children", "#firstUL/*", [] );
*
+ * @test t( "Form element :input", ":input", ["text1", "text2", "radio1", "radio2", "check1", "check2", "hidden1", "hidden2", "name", "area1", "select1", "select2", "select3"] );
+ * @test t( "Form element :radio", ":radio", ["radio1", "radio2"] );
+ * @test t( "Form element :checkbox", ":checkbox", ["check1", "check2"] );
+ * @test t( "Form element :text", ":text", ["text1", "text2", "hidden2", "name"] );
+ *
+ * @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 Array
* @private
@@ -1903,15 +1943,17 @@ jQuery.extend({
*/
sibling: function(elem, pos, not) {
var elems = [];
-
- var siblings = elem.parentNode.childNodes;
- for ( var i = 0; i < siblings.length; i++ ) {
- if ( not === true && siblings[i] == elem ) continue;
-
- if ( siblings[i].nodeType == 1 )
- elems.push( siblings[i] );
- if ( siblings[i] == elem )
- elems.n = elems.length - 1;
+
+ if(elem) {
+ var siblings = elem.parentNode.childNodes;
+ for ( var i = 0; i < siblings.length; i++ ) {
+ if ( not === true && siblings[i] == elem ) continue;
+
+ if ( siblings[i].nodeType == 1 )
+ elems.push( siblings[i] );
+ if ( siblings[i] == elem )
+ elems.n = elems.length - 1;
+ }
}
return jQuery.extend( elems, {
@@ -2637,6 +2679,10 @@ jQuery.macros = {
* @before
* @result "test"
*
+ * @test ok( $(document.getElementById('main')).id() == "main", "Check for id" );
+ * @test ok( $("#foo").id() == "foo", "Check for id" );
+ * @test ok( !$("head").id(), "Check for id" );
+ *
* @name id
* @type String
* @cat DOM/Attributes
@@ -2663,6 +2709,9 @@ jQuery.macros = {
* @before
* @result "my image"
*
+ * @test ok( $(document.getElementById('google')).title() == "Google!", "Check for title" );
+ * @test ok( !$("#yahoo").title(), "Check for title" );
+ *
* @name title
* @type String
* @cat DOM/Attributes
@@ -2689,6 +2738,10 @@ jQuery.macros = {
* @before
* @result "username"
*
+ * @test ok( $(document.getElementById('text1')).name() == "action", "Check for name" );
+ * @test ok( $("#hidden1").name() == "hidden", "Check for name" );
+ * @test ok( !$("#area1").name(), "Check for name" );
+ *
* @name name
* @type String
* @cat DOM/Attributes
@@ -2967,7 +3020,7 @@ jQuery.macros = {
* @param String expr An expression to filter the sibling Elements with
* @cat DOM/Traversing
*/
- siblings: jQuery.sibling,
+ siblings: "jQuery.sibling(a, null, true)",
/**
@@ -2978,6 +3031,8 @@ jQuery.macros = {
* @before Hello
Hello Again
And Again
* @result [ Hello Again ]
*
+ * @test isSet( $("#foo").children().get(), q("sndp", "en", "sap"), "Check for children" );
+ *
* @name children
* @type jQuery
* @cat DOM/Traversing
@@ -2991,6 +3046,8 @@ jQuery.macros = {
* @before Hello Hello Again
And Again
* @result [ Hello Again
]
*
+ * @test isSet( $("#foo").children("[code]").get(), q("sndp", "sap"), "Check for filtered children" );
+ *
* @name children
* @type jQuery
* @param String expr An expression to filter the child Elements with