diff --git a/src/jqLite.js b/src/jqLite.js index 0dbed8083..46f52fd41 100644 --- a/src/jqLite.js +++ b/src/jqLite.js @@ -645,7 +645,7 @@ forEach({ var lowercasedName = lowercase(name); if (BOOLEAN_ATTR[lowercasedName]) { if (isDefined(value)) { - if (value) { + if (value !== false && value !== null) { element.setAttribute(name, name); } else { element.removeAttribute(name); diff --git a/test/jqLiteSpec.js b/test/jqLiteSpec.js index e2d553132..c51ed56bf 100644 --- a/test/jqLiteSpec.js +++ b/test/jqLiteSpec.js @@ -733,6 +733,24 @@ describe('jqLite', function() { elm.attr('attribute', ''); expect(elm[0].getAttribute('attribute')).toBe(''); }); + + it('should remove the boolean attribute for a false value', function() { + var elm = jqLite(''); + elm.attr('multiple', null); + expect(elm[0].hasAttribute('multiple')).toBe(false); + }); + + it('should not remove the boolean attribute for an empty string as a value', function() { + var elm = jqLite('