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

Commit b4259fd

Browse files
Wesley Chowesleycho
authored andcommitted
Fixed code style, added test
Condensed logic, changed toEqual to toBe
1 parent cd21602 commit b4259fd

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

src/jqLite.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -358,9 +358,10 @@ function jqLiteHasClass(element, selector) {
358358
}
359359

360360
function jqLiteRemoveClass(element, cssClasses) {
361-
if (cssClasses && element.setAttribute) {
361+
var setter = element.setAttribute ? function(value) { element.setAttribute('class', value) } : function(value) { element.className = value};
362+
if (cssClasses && (element.setAttribute || msie === 9)) {
362363
forEach(cssClasses.split(' '), function(cssClass) {
363-
element.setAttribute('class', trim(
364+
setter(trim(
364365
(" " + (element.getAttribute('class') || '') + " ")
365366
.replace(/[\n\t]/g, " ")
366367
.replace(" " + trim(cssClass) + " ", " "))
@@ -371,7 +372,7 @@ function jqLiteRemoveClass(element, cssClasses) {
371372

372373
function jqLiteAddClass(element, cssClasses) {
373374
if (cssClasses && element.setAttribute) {
374-
var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
375+
var existingClasses = (' ' + (element.getAttribute('class') || element.className || '') + ' ')
375376
.replace(/[\n\t]/g, " ");
376377

377378
forEach(cssClasses.split(' '), function(cssClass) {
@@ -381,7 +382,8 @@ function jqLiteAddClass(element, cssClasses) {
381382
}
382383
});
383384

384-
element.setAttribute('class', trim(existingClasses));
385+
(msie === 9 && !(element instanceof SVGElement)) ? element.className = trim(existingClasses) :
386+
element.setAttribute('class', trim(existingClasses));
385387
}
386388
}
387389

test/jqLiteSpec.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,14 @@ describe('jqLite', function() {
713713
expect(jqLite(b).hasClass('abc')).toEqual(true);
714714
});
715715

716+
it('should allow adding of class in IE9', function() {
717+
if (msie !== 9) return; // IE9 doesn't support node.setAttribute
718+
var selector = jqLite([a, b]);
719+
expect(selector.addClass('abc')).toBe(selector);
720+
expect(jqLite(a).hasClass('abc')).toBe(true);
721+
expect(jqLite(b).hasClass('abc')).toBe(true);
722+
});
723+
716724

717725
it('should ignore falsy values', function() {
718726
var jqA = jqLite(a);

0 commit comments

Comments
 (0)