仿jquery的几行代码

单纯自己看,没写注释。。。

function myAddEvent(obj, sEv, fn) {
    if (obj.attachEvent) {
        obj.attachEvent('on' + sEv, function () {
            fn.call(obj)
        });
    } else {
        obj.addEventListener(sEv, fn, false)
    }
}
function getByClass(oparent, sclass) {
    var aEle = oparent.getElementsByTagName('*');
    var aResult = [];
    var i = 0;
    for (i = 0, len = aEle.length; i < len; i++) {
        if (aEle[i].className == sclass) {
            aResult.push(aEle[i])
        }
    }
    return aResult;
}
function vq(vArg) {
    this.elements = [];
    switch (typeof vArg) {
        case "function":
            myAddEvent(window, "load", vArg);
            break;
        case "string":
            switch (vArg.charAt(0)) {
                case "#":
                    var obj = document.getElementById(vArg.substring(1));
                    this.elements.push(obj);
                    break;
                case ".":
                    this.elements = getByClass(document, vArg.substring(1));
                    break;
                default:
                    this.elements = document.getElementsByTagName(vArg);
            }
            break;
        case "object":
            this.elements.push(vArg)
    }
}
vq.prototype.click = function (fn) {
    for (var i = 0; i < this.elements.length; i++) {
        myAddEvent(this.elements[i], "click", fn);
    }
}
function $(vArg) {
    return new vq(vArg)
}
vq.prototype.show = function () {
    for (var i = 0; i < this.elements.length; i++) {
        this.elements[i].style.display = "block";//咱不考虑行间对象
    }
}
vq.prototype.hide = function () {
    for (var i = 0; i < this.elements.length; i++) {
        this.elements[i].style.display = "none"
    }
}
vq.prototype.hover = function (fnOver, fnOut) {
    for (var i = 0; i < this.elements.length; i++) {
        myAddEvent(this.elements[i], "mouseover", fnOver);
        myAddEvent(this.elements[i], "mouseout", fnOut)
    }
}
vq.prototype.css = function (attr, value) {
    if (arguments.length == 2) {//设置样式
        for (var i = 0; i < this.elements.length; i++) {
            this.elements[i].style[attr] = value;
        }
    } else {//获取样式
        return getStyle(this.elements[0], attr);
    }
}
function getStyle(obj, attr) {
    if (obj.currentStyle) {
        return obj.currentStyle[attr]
    } else {
        return getComputedStyle(obj, false)[attr]
    }
}
vq.prototype.toggle = function () {
    for (var i = 0; i < this.elements.length; i++) {
        addToggle(this.element
        s[i])
    }
    function addToggle(obj) {
        var count = 0;
        myAddEvent(obj, "click", function () {
            arguments[count%arguments.length].call(obj);
            count++;
        })
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liugang0605

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值