Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 986608f

Browse files
committed
fix(jqLite): special-case attr('class') because of IE9 bug
1 parent 31b8624 commit 986608f

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/jqLite.js

+7-1
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,13 @@ forEach({
245245
},
246246

247247
attr: function(element, name, value){
248-
if (SPECIAL_ATTR[name]) {
248+
if (name === 'class') {
249+
if(isDefined(value)) {
250+
element.className = value;
251+
} else {
252+
return element.className;
253+
}
254+
} else if (SPECIAL_ATTR[name]) {
249255
if (isDefined(value)) {
250256
element[name] = !!value;
251257
} else {

test/jqLiteSpec.js

+9
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,15 @@ describe('jqLite', function(){
168168
var elm = jqLite('<div class="any">a</div>');
169169
expect(elm.attr('non-existing')).toBeUndefined();
170170
});
171+
172+
it('should special-case "class" attribute', function() {
173+
// stupid IE9 returns null for element.getAttribute('class') when element has ng:class attr
174+
var elm = jqLite('<div class=" any " ng:class="dynCls">a</div>');
175+
expect(elm.attr('class')).toBe(' any ');
176+
177+
elm.attr('class', 'foo bar');
178+
expect(elm.attr('class')).toBe('foo bar');
179+
});
171180
});
172181

173182

0 commit comments

Comments
 (0)