diff options
author | Joelle Fleurantin <joasqueeniebee@gmail.com> | 2015-10-18 16:20:25 -0400 |
---|---|---|
committer | Michał Gołębiowski <m.goleb@gmail.com> | 2015-10-18 16:36:52 -0400 |
commit | c752a5030bc00eb5b45dea9c28963f824a5c4f44 (patch) | |
tree | 364e9d3e188b768d4f72034ce04ef53561198e33 | |
parent | 3689963909880ed832ac17eabf7b9260927a68d8 (diff) | |
download | jquery-c752a5030bc00eb5b45dea9c28963f824a5c4f44.tar.gz jquery-c752a5030bc00eb5b45dea9c28963f824a5c4f44.zip |
Attributes: fix tabIndex on <img> in IE11
Fixes gh-2647
Closes gh-2664
-rw-r--r-- | src/attributes/prop.js | 20 | ||||
-rw-r--r-- | test/unit/attributes.js | 7 |
2 files changed, 22 insertions, 5 deletions
diff --git a/src/attributes/prop.js b/src/attributes/prop.js index 06528b0a5..da7bc1e86 100644 --- a/src/attributes/prop.js +++ b/src/attributes/prop.js @@ -5,7 +5,8 @@ define( [ "../selector" ], function( jQuery, access, support ) { -var rfocusable = /^(?:input|select|textarea|button)$/i; +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; jQuery.fn.extend( { prop: function( name, value ) { @@ -55,10 +56,19 @@ jQuery.extend( { propHooks: { tabIndex: { get: function( elem ) { - return elem.hasAttribute( "tabindex" ) || - rfocusable.test( elem.nodeName ) || elem.href ? - elem.tabIndex : - -1; + + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; } } }, diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 6e9f44c9f..564fb12e0 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -735,6 +735,13 @@ QUnit.test( "prop('tabindex')", function( assert ) { assert.equal( jQuery( "#linkWithNoHrefWithNegativeTabIndex" ).prop( "tabindex" ), -1, "anchor without href, no tabindex set" ); } ); +QUnit.test( "image.prop( 'tabIndex' )", function( assert ) { + assert.expect( 1 ); + var image = jQuery("<img src='data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' />") + .appendTo("#qunit-fixture"); + assert.equal( image.prop("tabIndex" ), -1, "tabIndex on image" ); +} ); + QUnit.test( "prop('tabindex', value)", function( assert ) { assert.expect( 10 ); |