From c785267eb8780d8b7658ef93ebb5ebddd566294d Mon Sep 17 00:00:00 2001 From: Brian Ford Date: Mon, 23 Sep 2013 17:29:51 -0700 Subject: fix(jqLite): use get/setAttribute so that jqLite works on SVG nodes jqLite previously used `elt.className` to add and remove classes from a DOM Node, but because the className property is not writable on SVG elements, it doesn't work with them. This patch replaces accesses to `className` with `get/setAttribute`. `classList` was also considered as a solution, but because only IE10+ supports it, we have to wait. :'( The JqLiteAddClass/JQLiteRemoveClass methods are now also used directly by $animate to work around the jQuery not being able to handle class modifications on SVG elements. Closes #3858 --- src/ng/animate.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/ng') diff --git a/src/ng/animate.js b/src/ng/animate.js index fbd17848..b3fb08de 100644 --- a/src/ng/animate.js +++ b/src/ng/animate.js @@ -156,7 +156,9 @@ var $AnimateProvider = ['$provide', function($provide) { className = isString(className) ? className : isArray(className) ? className.join(' ') : ''; - element.addClass(className); + forEach(element, function (element) { + JQLiteAddClass(element, className); + }); done && $timeout(done, 0, false); }, @@ -177,7 +179,9 @@ var $AnimateProvider = ['$provide', function($provide) { className = isString(className) ? className : isArray(className) ? className.join(' ') : ''; - element.removeClass(className); + forEach(element, function (element) { + JQLiteRemoveClass(element, className); + }); done && $timeout(done, 0, false); }, -- cgit v1.2.3