美文网首页
jQuery入门

jQuery入门

作者: 饥人谷_西瓜 | 来源:发表于2018-11-09 15:07 被阅读0次

首先直接完成api 用参数传入调用对象

let item3 = document.getElementById('item3');
function getSiblings(node) {
    let allChildren = node.parentNode.children;
    let array = { length: 0 }
    for (let i = 0; i < allChildren.length; i++) {
        if (allChildren[i] !== node) {
            array[array.length] = allChildren[i];
            array.length += 1;
        }
    }
    return array;
}

console.log(getSiblings(item3));

function addClasses(node,classes){
    for(let key in classes){
        let value = classes[key];
        if(value){
            node.classList.add(key);
        }else{
            node.classList.remove(key);
        }
    }
}

addClasses(item3,{'a':true,'b':false,'c':true});

优化函数逻辑

function addClasses(node, classes) {
    for (let key in classes) {
        let value = classes[key];
        let methodName = value ? 'add' : 'remove';
        node.classList[methodName](key);
    }
}

addClasses(item3, { 'a': true, 'b': false, 'c': true });

使用命名空间,减少全局对象数量

window.xxdom = {};
xxdom.getSiblings = function (node) {
    let allChildren = node.parentNode.children;
    let array = { length: 0 }
    for (let i = 0; i < allChildren.length; i++) {
        if (allChildren[i] !== node) {
            array[array.length] = allChildren[i];
            array.length += 1;
        }
    }
    return array;
}

xxdom.addClasses = function addClasses(node, classes) {
    classes.forEach((value) => item3.classList.add(value));
}

直接改写prototype对象,方便使用时调用

Node.prototype.getSiblings = function () {
    let allChildren = this.parentNode.children;
    let array = { length: 0 }
    for (let i = 0; i < allChildren.length; i++) {
        if (allChildren[i] !== this ){
            array[array.length] = allChildren[i];
            array.length += 1;
        }
    }
    return array;
}

Node.prototype.addClasses = function addClasses(classes) {
    classes.forEach((value) => this.classList.add(value));
}

console.log(item3.getSiblings());
item3.addClasses(['a','d'])

使用包装对象,减少冲突

window.jQuery = function (nodeOrSelector) {
    let nodes = {};
    if (typeof nodeOrSelector === 'string') {
        let tmp = document.querySelectorAll(nodeOrSelector);
        for (let i = 0; i < tmp.length; i++) {
            nodes[i] = tmp[i];
            nodes.length = tmp.length;
        }
    } else if (nodeOrSelector instanceof Node) {
        nodes = {
            0: querySelectorAll,
            length: 1
        };
    }


    nodes.addClass = function (classes) {
        classes.forEach((value) => {
            for (let i = 0; i < nodes.length; i++) {
                nodes[i].classList.add(value);
            }

        });
    }

    nodes.setText = function(text){
        for (let i = 0; i < nodes.length; i++) {
            nodes[i].textContent = text;
        }
    }
    return nodes;

}

let node2 = jQuery('ul > li');
node2.addClass(['a', 'e'])

相关文章

  • jQuery入门及选择器篇

    1、jQuery入门 1.1、什么是jQuery? jQuery是一个JavaScript函数库。jQuery是一...

  • Web前端JQuery入门实战案例

    前端jquery入门到实战 为什么要学习Jquery?因为生活。 案例: 使用jquery案例: jquery 快...

  • jQuery Mobile入门

    jQuery Mobile入门 下载 http://jquerymobile.com/ 什么是jQuery Mob...

  • JQuery 操作手册

    1-1主要内容 1、快速入门2、JQuery概念3、JQuery选择器4、JQuery动画5、JQuery DOM...

  • JQuery

    JQuery 基础:概念快速入门JQuery对象和JS对象区别与转换选择器DOM操作案例 JQuery 基础: 概...

  • java基础-day59-Jquery

    jQuery入门 1)了解jQuery的背景和特点2)理解js对象和jQuery对象的区别 4)js对象和jQue...

  • jQuery进阶

    前言: 在《jQuery入门》一文中,记录了jQuery选择器、属性与样式和DOM操作等内容,本文将对jQuery...

  • JQuery 和CSS 选择器对比

    学习前端大名鼎鼎的JQuery,入门肯定都是学习JQuery的选择器,大多数教程都会说JQuery能使用CSS的选...

  • jQuery 简介

    本教程我们来学习 JQuery 的基础入门知识。JQuery 是一个快速、简洁的 JavaScript 框架,是继...

  • jQuery 简介

    本教程我们来学习 JQuery 的基础入门知识。JQuery 是一个快速、简洁的 JavaScript 框架,是继...

网友评论

      本文标题:jQuery入门

      本文链接:https://www.haomeiwen.com/subject/tuvgxqtx.html