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\nAPI.hasClass=function(o,c){return o.classList.contains(c);};\r\nAPI.addClass=function(o,c){\r\n\tvar cArr=c.match(/[a-z][a-z0-9_-]*/gi);\r\n\to.classList.add.apply(o.classList,cArr);\r\n};\r\nAPI.removeClass=function(o,c){\r\n\tvar cArr=c.match(/[a-z][a-z0-9_-]*/gi);\r\n\to.classList.remove.apply(o.classList,cArr);\r\n};\r\n\r\nAPI.hasClassS=function(o,c){return API.classReg(c).test(o.className);};\r\nAPI.addClassS=function(o,c){\r\n\tvar cList=c.split(\u0027 \u0027);\r\n\tif(!API.hasClassS(o,cList[0])){\r\n\t\tif(o.className != \u0027\u0027) cList[0]=\u0027 \u0027\u002BcList[0];\r\n\t\to.className=o.className\u002BcList[0];\r\n\t}\r\n\tif(cList.length \u003E 1) API.addClassS(o,cList.slice(1).join(\u0027 \u0027));\r\n};\r\nAPI.removeClassS=function(o,c){\r\n\tvar cList=c.split(\u0027 \u0027);\r\n\tif(API.hasClassS(o,cList[0])) o.className=o.className.replace(API.classReg(cList[0]),\u0027 \u0027);\r\n\tif(cList.length \u003E 1) API.removeClassS(o,cList.slice(1).join(\u0027 \u0027));\r\n};\r\n\r\nAPI.hasClassSN=function(o,c){return API.classReg(c).test(o.className);};\r\nAPI.addClassSN=function(o,c){\r\n\tvar s=\u0027\u0027,cArr=c.match(/[a-z][a-z0-9_-]*/gi);\r\n\tfor(var i=0,len=cArr.length;i\u003Clen;i\u002B\u002B){\r\n\t\tif(!API.hasClassSN(o,cArr[i])){s\u002B=\u0027 \u0027\u002BcArr[i];}\r\n\t}\r\n\tif(o.className==\u0027\u0027) s=s.slice(1);\r\n\to.className=o.className\u002Bs;\r\n};\r\nAPI.removeClassSN=function(o,c){\r\n\tvar cArr=c.match(/[a-z][a-z0-9_-]*/gi);\r\n\tfor(var i=0,len=cArr.length;i\u003Clen;i\u002B\u002B){\r\n\t\tif(API.hasClassSN(o,cArr[i])) o.className=o.className.replace(API.classReg(cArr[i]),\u0027 \u0027);\r\n\t}\r\n};\r\n\r\nvar elem = document.getElementById(\u0027testElement\u0027);","TestCases":[{"Name":"classList.add/classList.remove","Code":"elem.classList.add(\u0027classtest\u0027,\u0027twoclass\u0027);","IsDeferred":false},{"Name":"function addClass/function removeClass","Code":"API.addClass(elem,\u0027classtest twoclass\u0027);","IsDeferred":false},{"Name":"function addClass/function removeClass S","Code":"API.addClassS(elem,\u0027classtest twoclass\u0027);","IsDeferred":false},{"Name":"function addClass/function removeClass S N","Code":"API.addClassSN(elem,\u0027classtest twoclass\u0027);","IsDeferred":false},{"Name":"jQuery","Code":"$(\u0027#testElement\u0027).addClass(\u0027classtest twoclass\u0027);","IsDeferred":false}]}