首页 > 代码库 > addClass()、removeClass(),正则表达式实现

addClass()、removeClass(),正则表达式实现

核心部分:

var reg = new RegExp("(^|[^-])\\b" + target_class + "\\b([^-]|$)");

原正则表达式若目标类名前后带有中划线 “-” 会出现匹配错误,如目标类名为 "active",干扰类名"-active"或"active-"也会匹配上。

var reg = new RegExp("\\s?\\b" + target_class + "\\b", "g");

完整代码:

function addClass(el, clas){    var reg = new RegExp("(^|[^-])\\b" + clas + "\\b([^-]|$)"),        trim = /^\s+|\s+$/g,        classStr = el.className;    classStr = classStr.replace(trim, ""); // 先删除类名前后的空格    el.className = reg.test(classStr) ? classStr : classStr + " " + clas;}function removeClass(el, clas){    var reg = new RegExp("(^|[^-])\\b" + clas + "\\b([^-]|$)", "g"),        trim = /^\s+|\s+$/g,        classStr = el.className;    classStr = classStr.replace(reg, "");    el.className = classStr.replace(trim, ""); //最后删除类名前后空格}

完整代码自己测试没有出现问题,有兴趣的朋友可以自行检测!

addClass()、removeClass(),正则表达式实现