需要帮助复制jQuery的addClass函数

时间:2012-03-03 22:01:30

标签: javascript jquery

我想使用普通的javascript复制jQuery的addClass函数 到目前为止,我已经完成了这个功能:

function addClass(el,cl){
el.className+=(el.className?' ':'')+cl
}

效果很好,但它使用了这种语法:

addClass(element,class)

我希望它使用这种语法:

element.addClass(class)

我该怎么做?

谢谢:)

2 个答案:

答案 0 :(得分:3)

在所有浏览器中,当元素是DOM元素(不是像jQuery对象这样的对象)时,没有一种非常安全的方法可以使element.addClass()适用于所有元素。一些框架在过去已经做到了这一点,并且遇到了一些问题,有些人正在逐渐远离这样做。我不建议这样做。

您不是从事浏览器兼容性或框架创建(不是您想要的),所以即使扩展DOM对象似乎更简洁,我也不推荐它。 jQuery和YUI不这样做。它们创建一个包含方法和DOM元素引用的包装器对象。

如果您想了解一些风险,请参考以下主题:What's wrong with Extending the DOM?

答案 1 :(得分:1)

您可以将其作为原型来扩展Element类。

Element.prototype.addClass = function(cl) {
    this.className+=(this.className?' ':'')+cl;
}

example

正如minitech指出的那样,这在所有浏览器(即IE)中都无法可靠地运行。