classList 操作方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| var CL = { addClass: function(ele, cls) { ele.classList.add(cls); },
removeClass: function(ele, cls) { ele.classList.remove(cls); },
hasClass: function(ele, cls) { return ele.classList.contains(cls); },
toggleClass: function(ele, cls) { return ele.classList.toggle(cls); } };
|
class自定义操作方法
ele.className.replace(/\s+/," ").split(" ");
用正则表达式来去除类名之间的任意个空格,并且用一个空格替换,相当于统一格式,然后用split方法以空格来分隔类名转化成数组。
hasClass方法在获取到元素的className的前后都加了空格,并且对要查找的类名前后也加了空格,是为了确保开头的类名和末尾的类名都能被查找到。
indexOf方法查找字符串的位置,查找不到返回-1。
addClass方法注意要在添加的类名前插入一个空格。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| var CC = { getClass: function(ele) { return ele.className.replace(/\s+/, " ").split(" "); },
hasClass: function(ele, cls) { return -1 < (" " + ele.className + " ").indexOf(" " + cls + " "); },
addClass: function(ele, cls) { if (!this.hasClass(ele, cls)) ele.className += " " + cls; },
removeClass: function(ele, cls) { if (this.hasClass(ele, cls)) { var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)', "gi"); ele.className = ele.className.replace(reg, " "); } },
toggleClass: function(ele, cls) { if (this.hasClass(ele, cls)) { this.removeClass(ele, cls); } else { this.addClass(ele, cls); } } };
|