X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=src%2Fjquery%2Fjquery.js;h=4fb7f8e75b86a147be99c51b9833206eec61705c;hb=76d6d445bb68009c010e0b91dbf21747bc2d35ba;hp=c6f2a9b8ecaa90f8ef2387cf5197508e94c48bfb;hpb=12e63353391f1a556a73fe92bcd8e5f0ac277726;p=jquery.git diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index c6f2a9b..4fb7f8e 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -430,30 +430,26 @@ jQuery.fn = jQuery.prototype = { * @cat DOM/Attributes */ attr: function( key, value, type ) { + var obj = key; + + // Look for the case where we're accessing a style value + if ( key.constructor == String ) + if ( value == undefined ) + return jQuery[ type || "attr" ]( this[0], key ); + else { + obj = {}; + obj[ key ] = value; + } + // Check to see if we're setting style values - return typeof key != "string" || value != undefined ? - this.each(function(){ - // See if we're setting a hash of styles - if ( value == undefined ) - // Set all the styles - for ( var prop in key ) - jQuery.attr( - type ? this.style : this, - prop, jQuery.parseSetter(key[prop]) - ); - - // See if we're setting a single key/value style - else { - // convert ${this.property} to function returnung that property - jQuery.attr( - type ? this.style : this, - key, jQuery.parseSetter(value) - ); - } - }) : - - // Look for the case where we're accessing a style value - jQuery[ type || "attr" ]( this[0], key ); + return this.each(function(){ + // Set all the styles + for ( var prop in obj ) + jQuery.attr( + type ? this.style : this, + prop, jQuery.prop(this, prop, obj[prop], type) + ); + }); }, /** @@ -530,10 +526,8 @@ jQuery.fn = jQuery.prototype = { /** * Set the text contents of all matched elements. * - * Similar to html(), but escapes HTML (replace "<" and ">" with their - * HTML entities. - * - * If stripTags argument is set to true, HTML is stripped. + * Similar to html(), but escapes HTML (replace "<" and ">" with their + * HTML entities). * * @example $("p").text("Some new text."); * @before
Test Paragraph.
@@ -548,23 +542,15 @@ jQuery.fn = jQuery.prototype = { * @name text * @type String * @param String val The text value to set the contents of the element to. - * @param Boolean stripTags (optional) Wheather to strip or only escape tags * @cat DOM/Attributes */ - text: function(e, stripTags) { - if ( typeof e == "string" ) - return this.html( stripTags ? e.replace(/<\/?[^>]+>/gi, '') : e.replace(//g, ">") ); - - e = e || this; - var t = ""; - for ( var j = 0, el = e.length; j < el; j++ ) { - var r = e[j].childNodes; - for ( var i = 0, rl = r.length; i < rl; i++ ) - if ( r[i].nodeType != 8 ) - t += r[i].nodeType != 1 ? - r[i].nodeValue : jQuery.fn.text([ r[i] ]); - } - return t; + text: function(e) { + var type = this.length && this[0].innerText == undefined ? + "textContent" : "innerText"; + + return e == undefined ? + this.length && this[0][ type ] : + this.each(function(){ this[ type ] = e; }); }, /** @@ -1053,7 +1039,7 @@ jQuery.fn = jQuery.prototype = { * @cat DOM/Attributes */ html: function( val ) { - return val == undefined ? ( this.length ? this[0].innerHTML : null ) : this.attr( "innerHTML", val ); + return val == undefined ? ( this.length ? this[0].innerHTML : null ) : this.empty().append( val ); }, /** @@ -1233,22 +1219,32 @@ jQuery.extend({ if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break; return obj; }, + + prop: function(elem, key, value){ + // Handle executable functions + return value.constructor == Function && + value.call( elem ) || value; + }, className: { + // internal only, use addClass("class") add: function( elem, c ){ jQuery.each( c.split(/\s+/), function(i, cur){ if ( !jQuery.className.has( elem.className, cur ) ) elem.className += ( elem.className ? " " : "" ) + cur; }); }, + // internal only, use removeClass("class") remove: function( elem, c ){ elem.className = c ? jQuery.grep( elem.className.split(/\s+/), function(cur){ return !jQuery.className.has( c, cur ); }).join(' ') : ""; }, - has: function( classes, c ){ - return classes && new RegExp("(^|\\s)" + c + "(\\s|$)").test( classes ); + // internal only, use is(".class") + has: function( t, c ) { + t = t.className || t; + return t && new RegExp("(^|\\s)" + c + "(\\s|$)").test( t ); } }, @@ -1315,11 +1311,10 @@ jQuery.extend({ if (prop == "float" || prop == "cssFloat") prop = jQuery.browser.msie ? "styleFloat" : "cssFloat"; - if (!force && elem.style[prop]) { - + if (!force && elem.style[prop]) ret = elem.style[prop]; - } else if (document.defaultView && document.defaultView.getComputedStyle) { + else if (document.defaultView && document.defaultView.getComputedStyle) { if (prop == "cssFloat" || prop == "styleFloat") prop = "float"; @@ -1349,66 +1344,67 @@ jQuery.extend({ clean: function(a) { var r = []; + for ( var i = 0, al = a.length; i < al; i++ ) { var arg = a[i]; - if ( typeof arg == "string" ) { // Convert html string into DOM nodes + + // Convert html string into DOM nodes + if ( typeof arg == "string" ) { // Trim whitespace, otherwise indexOf won't work as expected - var s = jQuery.trim(arg), s3 = s.substring(0,3), s6 = s.substring(0,6), - div = document.createElement("div"), wrap = [0,"",""]; - - if ( s.substring(0,4) == "