今天封装了关于jq的siblings的函数,想再封装一个关于removeClass的函数并实现链式调用,类似于document.getElementById().siblings().removeClass()这样的链式调用方式。尝试了多次均不成功,可能是思路不对,请多指点怎样实现用js封装jq的api并实现链式调用,不胜感激。提供思路也可!
Element.prototype.siblings=function siblings(){
var siblingsElement=[];
var parentAllElement=[];
if(! this.parentNode){
return siblingsElement;
};
parentAllElement=this.parentNode.getElementsByTagName(this.tagName)
for(var i=0,len=parentAllElement.length;i<len;i++){
if(parentAllElement[i]!=this)
siblingsElement.push(parentAllElement[i]);
}
return siblingsElement;
}
var hasClass=function(element,oClass){
return element.className.match(new RegExp('(^|\\s)' + oClass + '(\\s|$)'));
}
var removeClass=function(element,oClass){
var cls=new RegExp('(^|\\s)' + oClass + '(\\s|$)');
if(hasClass(element,oClass)){
element.className=element.className.replace(cls,'')}
}
想要链式调用 return 必须是有后续调用方法的对象
你siblings方法最后return的是一个内部的数组 他的原型上没有对应的方法 所以不成功