]> source.dussan.org Git - jquery.git/commitdiff
- Added a hook to swap display none for width and height in browsers that do not...
authortimmywil <tim.willison@thisismedium.com>
Sat, 2 Apr 2011 01:13:01 +0000 (21:13 -0400)
committertimmywil <tim.willison@thisismedium.com>
Sun, 3 Apr 2011 23:13:41 +0000 (19:13 -0400)
src/attributes.js
src/manipulation.js
test/unit/attributes.js

index f0398559047428b736f91a343c219c3d0cd9e652..f29c340a355e7efef3c0569b1becc525a2a90fbd 100644 (file)
@@ -446,6 +446,20 @@ if ( !jQuery.support.getSetAttribute ) {
                        return value;
                }
        };
+
+       // Retrieving the width/height attributes on an
+       // element with display: none returns 0 in ie6/7 (#5413)
+       jQuery.each([ "width", "height" ], function( i, name ) {
+               jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+                       get: function( elem ) {
+                               var ret;
+                               jQuery.swap( elem, { visibility: "hidden", display: "block" }, function() {
+                                       ret = elem.getAttribute( name );
+                               });
+                               return ret;
+                       }
+               });
+       });
 }
 
 // Remove certain attrs if set to false
index 81a55cb8923e91d8c74a4e7304c8d842b26790cf..758cdbae0e10eedd783e246c1b5719e760d8e04e 100644 (file)
@@ -549,7 +549,8 @@ jQuery.extend({
 
                // Return the cloned set
                return clone;
-},
+       },
+
        clean: function( elems, context, fragment, scripts ) {
                context = context || document;
 
index 262f3499e081f155ecdb349d27221f6ec68631d7..a73b51fc54bdb1d1738c4bc3c33cf41fdebad7e6 100644 (file)
@@ -75,7 +75,7 @@ test("prop(String, Object)", function() {
 });
 
 test("attr(String)", function() {
-       expect(28);
+       expect(30);
 
        equals( jQuery('#text1').attr('type'), "text", 'Check for type attribute' );
        equals( jQuery('#radio1').attr('type'), "radio", 'Check for type attribute' );
@@ -125,12 +125,16 @@ test("attr(String)", function() {
        optgroup.appendChild( option );
        select.appendChild( optgroup );
 
-       ok( jQuery("<div/>").attr("doesntexist") === undefined, "Make sure undefined is returned when no attribute is found." );
-       ok( jQuery().attr("doesntexist") === undefined, "Make sure undefined is returned when no element is there." );
-       
+       var $img = jQuery('<img style="display:none" width="215" height="53" src="http://static.jquery.com/files/rocker/images/logo_jquery_215x53.gif"/>').appendTo('body');
+       equals( $img.attr('width'), "215", "Retrieve width attribute an an element with display:none." );
+       equals( $img.attr('height'), "53", "Retrieve height attribute an an element with display:none." );
+
        // Check for style support
        ok( !!~jQuery('#dl').attr('style').indexOf('absolute'), 'Check style attribute getter' );
        ok( !!~jQuery('#foo').attr('style', 'position:absolute;').attr('style').indexOf('absolute'), 'Check style setter' );
+
+       ok( jQuery("<div/>").attr("doesntexist") === undefined, "Make sure undefined is returned when no attribute is found." );
+       ok( jQuery().attr("doesntexist") === undefined, "Make sure undefined is returned when no element is there." );
 });
 
 if ( !isLocal ) {