核心部分:
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, ""); //最后删除类名前后空格 }
完整代码自己测试没有出现问题,有兴趣的朋友可以自行检测!
时间: 2024-11-19 04:03:31