From 986608fe763482c79dfd0338e5041e5e673fec9f Mon Sep 17 00:00:00 2001 From: Igor Minar Date: Thu, 1 Sep 2011 02:37:32 -0700 Subject: fix(jqLite): special-case attr('class') because of IE9 bug --- src/jqLite.js | 8 +++++++- test/jqLiteSpec.js | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/jqLite.js b/src/jqLite.js index cb761294..ce9e612e 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -245,7 +245,13 @@ forEach({ }, attr: function(element, name, value){ - if (SPECIAL_ATTR[name]) { + if (name === 'class') { + if(isDefined(value)) { + element.className = value; + } else { + return element.className; + } + } else if (SPECIAL_ATTR[name]) { if (isDefined(value)) { element[name] = !!value; } else { diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index c06fcae4..b75289bb 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -168,6 +168,15 @@ describe('jqLite', function(){ var elm = jqLite('
a
'); expect(elm.attr('non-existing')).toBeUndefined(); }); + + it('should special-case "class" attribute', function() { + // stupid IE9 returns null for element.getAttribute('class') when element has ng:class attr + var elm = jqLite('
a
'); + expect(elm.attr('class')).toBe(' any '); + + elm.attr('class', 'foo bar'); + expect(elm.attr('class')).toBe('foo bar'); + }); }); -- cgit v1.2.3