Skip to content
Permalink
Browse files

- Added a hook to swap display none for width and height in browsers …

…that do not sufficiently support get/setAttribute
  • Loading branch information
timmywil
timmywil committed Apr 2, 2011
1 parent 1e9b3ef commit 5fc2281fcc83783b86647a5a86380b9ac21e7f79
Showing with 24 additions and 5 deletions.
  1. +14 −0 src/attributes.js
  2. +2 −1 src/manipulation.js
  3. +8 −4 test/unit/attributes.js
@@ -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
@@ -549,7 +549,8 @@ jQuery.extend({

// Return the cloned set
return clone;
},
},

clean: function( elems, context, fragment, scripts ) {
context = context || document;

@@ -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 ) {

0 comments on commit 5fc2281

Please sign in to comment.
You can’t perform that action at this time.