仿jquery的几行代码

来源:互联网 发布:淘宝登录界面刷不出来 编辑:程序博客网 时间:2024/06/16 13:48

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

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++;        })    }}
阅读全文
0 0
原创粉丝点击