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

Commit 64fd2c4

Browse files
committedOct 9, 2013
fix(jqLite): ignore class methods on comment elements
Since c785267 jqLite uses setAttribute (rather than className property) in order to change classes. Some elements (eg. Comment) do not have this method which blows up. jQuery silently ignores these method calls (because it uses className), so to get the same behavior as jQuery, we check for setAttribute method first.
1 parent b6a37d1 commit 64fd2c4

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed
 

‎src/jqLite.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,13 @@ function JQLiteData(element, key, value) {
279279
}
280280

281281
function JQLiteHasClass(element, selector) {
282+
if (!element.getAttribute) return false;
282283
return ((" " + (element.getAttribute('class') || '') + " ").replace(/[\n\t]/g, " ").
283284
indexOf( " " + selector + " " ) > -1);
284285
}
285286

286287
function JQLiteRemoveClass(element, cssClasses) {
287-
if (cssClasses) {
288+
if (cssClasses && element.setAttribute) {
288289
forEach(cssClasses.split(' '), function(cssClass) {
289290
element.setAttribute('class', trim(
290291
(" " + (element.getAttribute('class') || '') + " ")
@@ -296,7 +297,7 @@ function JQLiteRemoveClass(element, cssClasses) {
296297
}
297298

298299
function JQLiteAddClass(element, cssClasses) {
299-
if (cssClasses) {
300+
if (cssClasses && element.setAttribute) {
300301
var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')
301302
.replace(/[\n\t]/g, " ");
302303

‎test/jqLiteSpec.js

+10
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,16 @@ describe('jqLite', function() {
493493
});
494494

495495

496+
it('should ignore comment elements', function() {
497+
var comment = jqLite(document.createComment('something'));
498+
499+
comment.addClass('whatever');
500+
comment.hasClass('whatever');
501+
comment.toggleClass('whatever');
502+
comment.removeClass('whatever');
503+
});
504+
505+
496506
describe('hasClass', function() {
497507
it('should check class', function() {
498508
var selector = jqLite([a, b]);

0 commit comments

Comments
 (0)
This repository has been archived.