#5413 - Much shorter solution for getting width/height in ie6

- #8255 Added support for the list attribute in browsers that support it (it is automatically readonly, but can be set if using getAttribute( name, 2)
This commit is contained in:
timmywil 2011-04-01 21:38:54 -04:00
parent 5fc2281fcc
commit 8cbf551a48
3 changed files with 10 additions and 16 deletions

View file

@ -446,20 +446,6 @@ if ( !jQuery.support.getSetAttribute ) {
return value; 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 // Remove certain attrs if set to false
@ -481,7 +467,7 @@ jQuery.each([ "selected", "checked", "readonly", "disabled" ], function( i, name
// Some attributes require a special call on IE // Some attributes require a special call on IE
if ( !jQuery.support.hrefNormalized ) { if ( !jQuery.support.hrefNormalized ) {
jQuery.each([ "href", "src", "style" ], function( i, name ) { jQuery.each([ "href", "src", "style", "width", "height", "list" ], function( i, name ) {
jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
get: function( elem ) { get: function( elem ) {
return elem.getAttribute( name, 2 ); return elem.getAttribute( name, 2 );

View file

@ -203,6 +203,10 @@ Z</textarea>
<select name="D4" disabled="disabled"> <select name="D4" disabled="disabled">
<option selected="selected" value="NO">NO</option> <option selected="selected" value="NO">NO</option>
</select> </select>
<input id="list-test" type="text" />
<datalist id="datalist">
<option value="option"></option>
</datalist>
</form> </form>
<div id="moretests"> <div id="moretests">
<form> <form>

View file

@ -75,7 +75,7 @@ test("prop(String, Object)", function() {
}); });
test("attr(String)", function() { test("attr(String)", function() {
expect(30); expect(31);
equals( jQuery('#text1').attr('type'), "text", 'Check for type attribute' ); equals( jQuery('#text1').attr('type'), "text", 'Check for type attribute' );
equals( jQuery('#radio1').attr('type'), "radio", 'Check for type attribute' ); equals( jQuery('#radio1').attr('type'), "radio", 'Check for type attribute' );
@ -108,6 +108,10 @@ test("attr(String)", function() {
jQuery('<a/>').attr({ 'id': 'tAnchor5', 'href': '#5' }).appendTo('#main'); jQuery('<a/>').attr({ 'id': 'tAnchor5', 'href': '#5' }).appendTo('#main');
equals( jQuery('#tAnchor5').attr('href'), "#5", 'Check for non-absolute href (an anchor)' ); equals( jQuery('#tAnchor5').attr('href'), "#5", 'Check for non-absolute href (an anchor)' );
// list attribute is readonly by default in browsers that support it
jQuery("#list-test").attr("list", "datalist");
equals( jQuery("#list-test").attr("list"), "datalist", "Check setting list attribute" );
// Related to [5574] and [5683] // Related to [5574] and [5683]
var body = document.body, $body = jQuery(body); var body = document.body, $body = jQuery(body);