Test
{"ScriptPreparationCode":"var API = API || {};\r\nAPI.classReg=function(className){return new RegExp(\u0022(^|\\\\s\u002B)\u0022\u002BclassName\u002B\u0022(\\\\s\u002B|$)\u0022);};\r\n\r\nif(\u0027classList\u0027 in document.documentElement){\r\n\tAPI.hasClass=function(elem,c){return elem.classList.contains(c);};\r\n \tAPI.addClass=function(elem,c){\r\n\t\tvar cArr=c.match(/[a-z][a-z0-9_-]*/gi);\r\n\t\telem.classList.add.apply(elem.classList, cArr);\r\n };\r\n API.removeClass=function(elem,c){\r\n\t\tvar cArr=c.match(/[a-z][a-z0-9_-]*/gi);\r\n\t\telem.classList.remove.apply(elem.classList, cArr);\r\n };\r\n}else{\r\n\tAPI.hasClass=function(elem,c){return API.classReg(c).test(elem.className);};\r\n \tAPI.addClass=function(elem,c){\r\n\t\tvar cList=c.split(/\\s\u002B/);\r\n\t\tif(!API.hasClass(elem,cList[0])){\r\n\t\t\tif(elem.className != \u0027\u0027) cList[0]=\u0027 \u0027\u002BcList[0];\r\n\t\t\telem.className=elem.className\u002BcList[0];\r\n\t\t}\r\n\t\tif(cList.length \u003E 1) API.addClass(elem,cList.slice(1).join(\u0027 \u0027));\r\n };\r\n API.removeClass=function(elem,c){\r\n\t\tvar cList=c.split(/\\s\u002B/);\r\n\t\tif(API.hasClass(elem,cList[0])) elem.className=elem.className.replace(API.classReg(cList[0]),\u0027 \u0027);\r\n\t\tif(cList.length \u003E 1) API.removeClass(elem,cList.slice(1).join(\u0027 \u0027));\r\n };\r\n}\r\n\r\nvar elem = document.getElementById(\u0027testElement\u0027);","TestCases":[{"Name":"classList.add/classList.remove (1 class)","Code":"elem.classList.add(\u0027classtest\u0027);\r\nelem.classList.remove(\u0027classtest\u0027);","IsDeferred":false},{"Name":"function addClass/function removeClass (1 class)","Code":"API.addClass(elem,\u0027classtest\u0027);\r\nAPI.removeClass(elem,\u0027classtest\u0027);","IsDeferred":false},{"Name":"jQuery (1 class)","Code":"$(\u0027#testElement\u0027).addClass(\u0027classtest\u0027);\r\n$(\u0027#testElement\u0027).removeClass(\u0027classtest\u0027);","IsDeferred":false},{"Name":"classList.add/classList.remove (2 class)","Code":"elem.classList.add(\u0027classtest\u0027,\u0027twoclass\u0027);\r\nelem.classList.remove(\u0027classtest\u0027,\u0027twoclass\u0027);","IsDeferred":false},{"Name":"function addClass/function removeClass (2 class)","Code":"API.addClass(elem,\u0027classtest twoclass\u0027);\r\nAPI.removeClass(elem,\u0027classtest twoclass\u0027);","IsDeferred":false},{"Name":"jQuery (2 class)","Code":"$(\u0027#testElement\u0027).addClass(\u0027classtest twoclass\u0027);\r\n$(\u0027#testElement\u0027).removeClass(\u0027classtest twoclass\u0027);","IsDeferred":false}]}