From 8cbf551a48cbc47eccba2050e95745f70166ae1d Mon Sep 17 00:00:00 2001 From: timmywil Date: Fri, 1 Apr 2011 21:38:54 -0400 Subject: [PATCH] #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) --- src/attributes.js | 16 +--------------- test/index.html | 4 ++++ test/unit/attributes.js | 6 +++++- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/attributes.js b/src/attributes.js index f29c340a..5afcffce 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -446,20 +446,6 @@ 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 @@ -481,7 +467,7 @@ jQuery.each([ "selected", "checked", "readonly", "disabled" ], function( i, name // Some attributes require a special call on IE 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 ], { get: function( elem ) { return elem.getAttribute( name, 2 ); diff --git a/test/index.html b/test/index.html index c7c2ae55..a1065508 100644 --- a/test/index.html +++ b/test/index.html @@ -203,6 +203,10 @@ Z + + + +
diff --git a/test/unit/attributes.js b/test/unit/attributes.js index a73b51fc..ad051649 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -75,7 +75,7 @@ test("prop(String, Object)", function() { }); test("attr(String)", function() { - expect(30); + expect(31); equals( jQuery('#text1').attr('type'), "text", 'Check for type attribute' ); equals( jQuery('#radio1').attr('type'), "radio", 'Check for type attribute' ); @@ -108,6 +108,10 @@ test("attr(String)", function() { jQuery('').attr({ 'id': 'tAnchor5', 'href': '#5' }).appendTo('#main'); 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] var body = document.body, $body = jQuery(body);