fix(jqLite): special-case attr('class') because of IE9 bug

This commit is contained in:
Igor Minar 2011-09-01 02:37:32 -07:00
parent 31b8624121
commit 986608fe76
2 changed files with 16 additions and 1 deletions

View file

@ -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 {

View file

@ -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');
});
});