前面介绍的获取 CSS 样式的方法,加上节点方法,再加上现在操作 class 的方法,就可以封装成一个简单的 DOM 库。
1. getByClass
思路:
获取到上下文中的所有元素
遍历这些元素,是否存在这个 class
有这个 class 的元素,就保存在一个数组中,最后返回数组
function getByClass(str, context) {}
2. hasClass
function hasClass(ele, str) {//=> 去除首尾空格str = str.replace(/^ +| +$/g, '');var reg = new RegExp('/'+str+'/');return reg.test(ele.className);}
3. addClass
思路:
判断是否已经存在这个 class
存在则直接返回,不存在的话,再添加进去
实现多个添加,需要把传入的字符串分隔为数组,然后按照上面的判断进行添加
function addClass(ele, str) {//=> 去除首尾空格str = str.replace(/^ +| +$/g, '');//=> 已经拥有,直接 returnif(hasClass(ele, str)) return;var ary = str.split(/ +/g);for (var i = 0; i<ary.length; i++) {if (!hasClass(ele, ary[i])) {ele.className += ary[i];}}}
4. removeClass
思路:
判断是否存在这个 class
有的话就将其包含左右空格替换为空格,没有的话,就什么都不做
function removeClass(ele, str) {str = str.replace(/^ +| +$/g, '');var ary = str.aplit(/ +/g);for (var i = 0; i < ary.length; i++) {var reg = new RegExp('(^| +)' + ary[i] + '( +|$)');ele.className = ele.className.replace(reg,' ');}}
