前面介绍的获取 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, '');
//=> 已经拥有,直接 return
if(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,' ');
}
}