X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fjquery%2Fjquery.js;h=2ddb919cc506a4ba2746da66d1cbf72e07b9543b;hb=688c724b1f07b3e0ca7cb27b1d9f76b7b11959ce;hp=d8d2564b9b593936bfa5679680629cb931fe9b45;hpb=dde208fc4b60aa183899687ec071a6c31556ead2;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index d8d2564..2ddb919 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -28,7 +28,7 @@ window.undefined = window.undefined; * @name jQuery * @cat Core */ -jQuery = function(a,c) { +var jQuery = function(a,c) { // Shortcut for document ready (because $(document).each() is silly) if ( a && typeof a == "function" && jQuery.fn.ready ) @@ -50,8 +50,10 @@ jQuery = function(a,c) { return new jQuery(a,c); // Handle HTML strings - var m = /^[^<]*(<.+>)[^>]*$/.exec(a); - if ( m ) a = jQuery.clean( [ m[1] ] ); + if ( a.constructor == String ) { + var m = /^[^<]*(<.+>)[^>]*$/.exec(a); + if ( m ) a = jQuery.clean( [ m[1] ] ); + } // Watch for when an array is passed in this.get( a.constructor == Array || a.length && !a.nodeType && a[0] != undefined && a[0].nodeType ? @@ -61,12 +63,14 @@ jQuery = function(a,c) { // Find the matching elements and save them for later jQuery.find( a, c ) ); - // See if an extra function was provided + // 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 @@ -446,6 +450,17 @@ jQuery.fn = jQuery.prototype = { * $("#check2").attr('checked', false); * ok( document.getElementById('check2').checked == false, 'Set checked attribute' ); * + * @test stop(); + * $.get('data/dashboard.xml', function(xml) { + * var titles = []; + * $('tab', xml).each(function() { + * titles.push($(this).attr('title')); + * }); + * ok( titles[0] == 'Location', 'attr() in XML context: Check first title' ); + * ok( titles[1] == 'Users', 'attr() in XML context: Check second title' ); + * start(); + * }); + * * @name attr * @type jQuery * @param String key The name of the property to set. @@ -1018,6 +1033,7 @@ jQuery.fn = jQuery.prototype = { for ( var i = 0; i < t.length; i++ ) if ( jQuery.filter(t[i],[a]).r.length ) return a; + return false; }) || t.constructor == Boolean && @@ -1281,8 +1297,17 @@ jQuery.fn = jQuery.prototype = { * @cat Javascript */ jQuery.extend = jQuery.fn.extend = function(obj,prop) { + // Watch for the case where null or undefined gets passed in by accident + if ( arguments.length > 1 && (prop === null || prop == undefined) ) + return obj; + + // If no property object was provided, then we're extending jQuery if ( !prop ) { prop = obj; obj = this; } + + // Extend the base object for ( var i in prop ) obj[i] = prop[i]; + + // Return the modified object return obj; }; @@ -1374,7 +1399,7 @@ jQuery.extend({ fn.apply( obj[i], args || [i, obj[i]] ); else for ( var i = 0; i < obj.length; i++ ) - fn.apply( obj[i], args || [i, obj[i]] ); + if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break; return obj; }, @@ -1476,6 +1501,9 @@ jQuery.extend({ } else if (document.defaultView && document.defaultView.getComputedStyle) { + if (prop == "cssFloat" || prop == "styleFloat") + prop = "float"; + prop = prop.replace(/([A-Z])/g,"-$1").toLowerCase(); var cur = document.defaultView.getComputedStyle(elem, null); @@ -1558,7 +1586,7 @@ jQuery.extend({ empty: "!a.childNodes.length", // Text Check - contains: "(a.innerText||a.innerHTML).indexOf(m[3])>=0", + 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'", @@ -1648,9 +1676,9 @@ jQuery.extend({ * t( "Attribute Exists", "*[@title]", ["google"] ); * t( "Attribute Exists", "[@title]", ["google"] ); * - * t( "Non-existing part of attribute [@name*=bla]", "[@name*=bla]", [] ); - * t( "Non-existing start of attribute [@name^=bla]", "[@name^=bla]", [] ); - * t( "Non-existing end of attribute [@name$=bla]", "[@name$=bla]", [] ); + * t( "Non-existing part of attribute", "[@name*=bla]", [] ); + * t( "Non-existing start of attribute", "[@name^=bla]", [] ); + * t( "Non-existing end of attribute", "[@name$=bla]", [] ); * * t( "Attribute Equals", "a[@rel='bookmark']", ["simon1"] ); * t( "Attribute Equals", 'a[@rel="bookmark"]', ["simon1"] ); @@ -1828,7 +1856,7 @@ jQuery.extend({ "for": "htmlFor", "class": "className", "float": jQuery.browser.msie ? "styleFloat" : "cssFloat", - cssFloat: fix["float"], + cssFloat: jQuery.browser.msie ? "styleFloat" : "cssFloat", innerHTML: "innerHTML", className: "className", value: "value", @@ -1859,7 +1887,7 @@ jQuery.extend({ return elem.getAttributeNode(name).nodeValue; } else if ( elem.getAttribute != undefined && elem.tagName ) { // IE elem.getAttribute passes even for style if ( value != undefined ) elem.setAttribute( name, value ); - return elem.getAttribute( name, 2 ); + return elem.getAttribute( name ); } else { name = name.replace(/-([a-z])/ig,function(z,b){return b.toUpperCase();}); if ( value != undefined ) elem[name] = value; @@ -2220,12 +2248,12 @@ jQuery.extend({ }, handle: function(event) { - if ( typeof jQuery == "undefined" ) return; + if ( typeof jQuery == "undefined" ) return false; event = event || jQuery.event.fix( window.event ); // If no correct event was found, fail - if ( !event ) return; + if ( !event ) return false; var returnValue = true; @@ -2681,7 +2709,7 @@ jQuery.macros = { /** * Set the value of every matched element. * - * @example $("input").value("test"); + * @example $("input").val("test"); * @before * @result *