X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fjquery%2Fjquery.js;h=741b13b53521f162760769a1530eeebbbe0585b1;hb=37407164803df62c4efb1332e7f94b56e693a108;hp=fe8b32bc5f57b2ac46e711a16cdb8f640d5b3480;hpb=fd249ca808408166882847c217d55ae4c5a799e8;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index fe8b32b..741b13b 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -24,7 +24,7 @@ window.undefined = window.undefined; */ var jQuery = function(a,c) { // If the context is global, return a new object - if ( window == this ) + if ( window == this || !this.init ) return new jQuery(a,c); return this.init(a,c); @@ -565,7 +565,7 @@ jQuery.fn = jQuery.prototype = { * @cat DOM/Attributes */ text: function(e) { - if ( typeof e == "string" ) + if ( typeof e != "object" && e != null ) return this.empty().append( document.createTextNode( e ) ); var t = ""; @@ -811,7 +811,7 @@ jQuery.fn = jQuery.prototype = { /** * Searches for all elements that match the specified expression. - + * * This method is a good way to find additional descendant * elements with which to process. * @@ -1171,9 +1171,14 @@ jQuery.fn = jQuery.prototype = { obj = this.getElementsByTagName("tbody")[0] || this.appendChild(document.createElement("tbody")); jQuery.each( a, function(){ - fn.apply( obj, [ clone ? this.cloneNode(true) : this ] ); + if ( jQuery.nodeName(this, "script") ) { + if ( this.src ) + jQuery.ajax({ url: this.src, async: false, dataType: "script" }); + else + (new Function( this.text || this.textContent || this.innerHTML || "" ))(); + } else + fn.apply( obj, [ clone ? this.cloneNode(true) : this ] ); }); - }); } }; @@ -1443,7 +1448,7 @@ jQuery.extend({ } if (prop.match(/float/i)) - prop = jQuery.browser.msie ? "styleFloat" : "cssFloat"; + prop = jQuery.styleFloat; if (!force && elem.style[prop]) ret = elem.style[prop]; @@ -1466,6 +1471,9 @@ jQuery.extend({ ret = c && c.getPropertyValue(prop) || ""; }); + if ( prop == "opacity" && ret == "" ) + ret = "1"; + } else if (elem.currentStyle) { var newProp = prop.replace(/\-(\w)/g,function(m,c){return c.toUpperCase();}); ret = elem.currentStyle[prop] || elem.currentStyle[newProp]; @@ -1539,7 +1547,7 @@ jQuery.extend({ arg = jQuery.makeArray( div.childNodes ); } - if ( 0 === arg.length && !jQuery(arg).is("form, select") ) + if ( 0 === arg.length && (!jQuery.nodeName(arg, "form") && !jQuery.nodeName(arg, "select")) ) return; if ( arg[0] == undefined || jQuery.nodeName(arg, "form") || arg.options ) @@ -1559,13 +1567,23 @@ jQuery.extend({ if ( fix[name] ) { if ( value != undefined ) elem[fix[name]] = value; return elem[fix[name]]; + } else if ( jQuery.browser.msie && name == "style" ) + return jQuery.attr( elem.style, "cssText", value ); - } else if ( value == undefined && jQuery.browser.msie && jQuery.nodeName(elem, "form") && (name == "action" || name == "method") ) + else if ( value == undefined && jQuery.browser.msie && jQuery.nodeName(elem, "form") && (name == "action" || name == "method") ) return elem.getAttributeNode(name).nodeValue; // IE elem.getAttribute passes even for style else if ( elem.tagName ) { - // IE actually uses filters for opacity ... elem is actually elem.style + + if ( value != undefined ) elem.setAttribute( name, value ); + if ( jQuery.browser.msie && /href|src/.test(name) && !jQuery.isXMLDoc(elem) ) + return elem.getAttribute( name, 2 ); + return elem.getAttribute( name ); + + // elem is actually elem.style ... set the style + } else { + // IE actually uses filters for opacity if ( name == "opacity" && jQuery.browser.msie ) { if ( value != undefined ) { // IE has trouble with opacity if it does not have layout @@ -1580,14 +1598,6 @@ jQuery.extend({ return elem.filter ? (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100).toString() : ""; } - - if ( value != undefined ) elem.setAttribute( name, value ); - if ( jQuery.browser.msie && /href|src/.test(name) && !jQuery.isXMLDoc(elem) ) - return elem.getAttribute( name, 2 ); - return elem.getAttribute( name ); - - // elem is actually elem.style ... set the style - } else { name = name.replace(/-([a-z])/ig,function(z,b){return b.toUpperCase();}); if ( value != undefined ) elem[name] = value; return elem[name]; @@ -1606,7 +1616,7 @@ jQuery.extend({ * @cat JavaScript */ trim: function(t){ - return t.replace(/^\s+|\s+$/g, ""); + return (t||"").replace(/^\s+|\s+$/g, ""); }, makeArray: function( a ) { @@ -1665,11 +1675,15 @@ jQuery.extend({ unique: function(first) { var r = [], num = jQuery.mergeNum++; - for ( var i = 0, fl = first.length; i < fl; i++ ) - if ( num != first[i].mergeNum ) { - first[i].mergeNum = num; - r.push(first[i]); - } + try { + for ( var i = 0, fl = first.length; i < fl; i++ ) + if ( num != first[i].mergeNum ) { + first[i].mergeNum = num; + r.push(first[i]); + } + } catch(e) { + r = first; + } return r; }, @@ -1810,7 +1824,7 @@ new function() { // Figure out what browser is being used jQuery.browser = { - version: b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)[1], + version: (b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1], safari: /webkit/.test(b), opera: /opera/.test(b), msie: /msie/.test(b) && !/opera/.test(b), @@ -1820,12 +1834,14 @@ new function() { // Check to see if the W3C box model is being used jQuery.boxModel = !jQuery.browser.msie || document.compatMode == "CSS1Compat"; + jQuery.styleFloat = jQuery.browser.msie ? "styleFloat" : "cssFloat", + jQuery.props = { "for": "htmlFor", "class": "className", - "float": jQuery.browser.msie ? "styleFloat" : "cssFloat", - cssFloat: jQuery.browser.msie ? "styleFloat" : "cssFloat", - styleFloat: jQuery.browser.msie ? "styleFloat" : "cssFloat", + "float": jQuery.styleFloat, + cssFloat: jQuery.styleFloat, + styleFloat: jQuery.styleFloat, innerHTML: "innerHTML", className: "className", value: "value", @@ -1835,6 +1851,7 @@ new function() { selected: "selected", maxlength: "maxLength" }; + }; /**