我想使用普通的javascript复制jQuery的addClass函数 到目前为止,我已经完成了这个功能:
function addClass(el,cl){
el.className+=(el.className?' ':'')+cl
}
效果很好,但它使用了这种语法:
addClass(element,class)
我希望它使用这种语法:
element.addClass(class)
我该怎么做?
谢谢:)
答案 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;
}
正如minitech指出的那样,这在所有浏览器(即IE)中都无法可靠地运行。