热门关键字:
jquery > jquery教程 > jquery教程 > 网友低调分享自己写的模拟Jquery库功能

网友低调分享自己写的模拟Jquery库功能

1832
作者:管理员
发布时间:2013/5/22 8:24:41
评论数:0
转载请自觉注明原文:http://www.jq-school.com/Show.aspx?id=278

文章由网友【福建-前端-低调】分享


// 基础库封装
//解决多个对象
var $ = function(args) {
    return new Base(args);
}
function Base(args) {
    //创建一个素组,来保存获取的节点和节点数组
    this.elements = [];
    if (args != undefined) {
        if (typeof args == 'string') {
            var styargs = args.charAt(0);
            switch (styargs) {
            case "#":
                this.getid(args.substring(1)) break;
            case ".":
                this.getClass(args.substring(1)) break;
            default:
                this.getTagName(args.substring(1))
            }
        } else if (typeof args == 'object') {
            this.elements[0] = args;
        }

    }
}
//获取节点元素
Base.prototype.getTagName = function(tag) {
    var tags = document.getElementsByTagName(tag);
    for (var i = 0; i < tags.length; i++) {
        this.elements.push(tags[i]);
    }
    return this;
}
//获取ID
Base.prototype.getid = function(id) {
    this.elements.push(document.getElementById(id)) return this;
}
//获取class类
Base.prototype.getClass = function(className) {
    var all = document.getElementsByTagName("*");
    for (var i = 0; i < all.length; i++) {
        if (all[i].className == className) {
            this.elements.push(all[i])
        }
    }
    return this;
}
//获取某个节点
Base.prototype.eq = function(num) {
    /*---得到你要获取的节点---*/
    var element = this.elements[num]
    //将存入素组里面的节点对象都清空
    this.elements = [];
    //将获取的节点对象赋值给对象数组属性在返回Base对象
    this.elements[0] = element;
    return this;
}
//设置CSS方法
Base.prototype.css = function(attr, value) {
    for (var i = 0; i < this.elements.length; i++) {
        if (arguments.length == 1) {
            var sty = window.getComputedStyle ? window.getComputedStyle(this.elements[i], null) : null || this.elements[i].currentStyle
            return sty[attr];
        }
        this.elements[i].style[attr] = value;
    }
    return this;
}
//设置html 获取思路:判断有没有参数没有则表示获取
Base.prototype.html = function(str) {
    for (var i = 0; i < this.elements.length; i++) {
        if (arguments.length == 0) {
            return this.elements[i].innerHTML;
        }
        this.elements[i].innerHTML = str;
    }
    return this;
}
//设置onclick方法
Base.prototype.click = function(objevent) {
    for (var i = 0; i < this.elements.length; i++) {
        this.elements[i].onclick = objevent;
    }
    return this;
}
Base.prototype.hide = function() {
    for (var i = 0; i < this.elements.length; i++) {
        this.elements[i].style.display = 'none';
    }
    return this;
}
//封装hover方法
Base.prototype.hover = function(over, out) {
    for (var i = 0; i < this.elements.length; i++) {
        this.elements[i].onmouseover = over;
        this.elements[i].onmouseout = out;
    }
    return this;
}
Base.prototype.find = function(str) {
    var chdarr = [];
    /*------思路首先遍历要找元素的父层-------*/
    for (var i = 0; i < this.elements.length; i++) {
        /*-----得到父层下要找的元素----*/
        var tags = this.elements[i].getElementsByTagName(str);
        /*------遍历查找到的所有的元素--------*/
        for (var j = 0; j < tags.length; j++) {
            chdarr.push(tags[j]);
        }
    }
    /*--------将得到的元素重新赋值给最外层的元素---------*/
    this.elements = chdarr
    return this;
}
/*---获得自身元素之外的其他元素
	思路:首先将不要放入的元素存在一个变量中
	 marr:创建一个筛选过后的数组;
---*/
Base.prototype.siblings = function() {
    var m = this.elements[0];
    var marr = [];
    /*----------获得当前对象父节点的所有孩子---------*/
    var chd = m.parentNode.children;
    for (var i = 0; i < chd.length; i++) {
        if (chd[i] != m) {
            marr.push(chd[i])
        }
    }
    this.elements = marr;
    return this
}


页面调用如下:

<script type="text/javascript" src="Base.js"></script>
<script type="text/javascript">
	$(".div1").click(function(){
			$(this).css('color','red').siblings().css('color','yellow')
		})
</script>

打包下载





如果您觉得本文的内容对您的学习有所帮助:支付鼓励



关键字:模拟Jquery库 网友低调
友荐云推荐