我正在创建一些小的添加/删除/切换/具有类功能,它们都工作得很好,直到我在一个类上有多个相同类名值的实例。
这是我目前所处的位置,您会看到我的removeClass 正则表达式中有'g'标志:
Element.prototype.hasClass = function (className) {
return new RegExp('(\\s|^)' + className + '(\\s|$)').test(this.className);
};
Element.prototype.addClass = function (className) {
if (!this.hasClass(className)) {
this.className += ' ' + className;
}
};
Element.prototype.removeClass = function (className) {
if (this.hasClass(className)) {
this.className = this.className.replace(new RegExp('(\\s|^)' + className + '(\\s|$)', 'g'), '$2');
}
};
Element.prototype.toggleClass = function (className) {
if (this.hasClass(className)) {
this.removeClass(className);
} else {
this.addClass(className);
}
};
起始 HTML:
<p class=" james james dean james james james">Hello</p>
渲染时:
<p class=" james dean james">Hello</p>
这是我的工作 jsFiddle,如果您检查元素,您会看到并非所有james实例都已删除。谁能阐明我做错了什么?在此先感谢:) http://jsfiddle.net/8urPs/