js链式调用的疑惑

今天封装了关于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,'')}

}


皈依舞
浏览 545回答 2
2回答

烙印99

想要链式调用 return 必须是有后续调用方法的对象你siblings方法最后return的是一个内部的数组 他的原型上没有对应的方法 所以不成功

一只名叫tom的猫

Element.prototype.removeClass=function(oClass){&nbsp; &nbsp; var cls=new RegExp('(^|\\s)' + oClass + '(\\s|$)');&nbsp; &nbsp; for(var i = 0; i < this.length; i++ ) {&nbsp; &nbsp; &nbsp; &nbsp; if(hasClass(this[i],oClass)){&nbsp; &nbsp; &nbsp; &nbsp; element.className=this[i].className.replace(cls,'')}&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript