我有下一个代码:
dom.remove_class = function(element, class_name)
{
// For Chrome, Firefox...
if (element.classList)
{
return element.classList.remove(class_name);
}
// Fallback
var replace = (" " + element.className + " ").replace(/[\n\t\r]/g, " ").replace(" " + class_name + " ", "");
if(replace > -1)
{
element.className = replace;
return true;
}
return false;
}
很容易为支持它的浏览器返回element.classList.remove(),但我发现(受jQuery启发)关于如何返回true或false的唯一方法是回退部分。有谁知道如何改进这段代码?或者就像现在一样?
提前谢谢!
答案 0 :(得分:2)
如何在Mozilla hack site上完成:
var removeClass = function (elm, className) {
if (document.documentElement.classList) {
removeClass = function (elm, className) {
elm.classList.remove(className);
}
} else {
removeClass = function (elm, className) {
if (!elm || !elm.className) {
return false;
}
var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)", "g");
elm.className = elm.className.replace(regexp, "$2");
}
}
removeClass(elm, className);
}