aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/jqLite.js8
-rw-r--r--test/jqLiteSpec.js9
2 files changed, 16 insertions, 1 deletions
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('<div class="any">a</div>');
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('<div class=" any " ng:class="dynCls">a</div>');
+ expect(elm.attr('class')).toBe(' any ');
+
+ elm.attr('class', 'foo bar');
+ expect(elm.attr('class')).toBe('foo bar');
+ });
});