H5W3
当前位置:H5W3 > 其他技术问题 > 正文

【Web前端问题】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,'')}
}

回答:

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

回答:

Element.prototype.removeClass=function(oClass){
    var cls=new RegExp('(^|\\s)' + oClass + '(\\s|$)');
    for(var i = 0; i < this.length; i++ ) {
        if(hasClass(this[i],oClass)){
        element.className=this[i].className.replace(cls,'')}
    }
}

本文地址:H5W3 » 【Web前端问题】js链式调用的疑惑

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址