• 实现一个jQuery API


    先上代码

    HTML代码如下

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
      
        <style>
            .red {
                color: red;
            }
        </style>
        <title>Document</title>
    </head>
    
    <body>
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <script src="./demo.js"></script>
    
    </body>
    
    </html>

    JS代码如下

    #传入参数,如果参数是string类型,则调用DOM的querySelectorAll方法,将获取到的元素用伪数组返回;如果参数是Node,则返回nodes伪数组
    window.jQuery = function (nodeOrSelector) { let nodes = {} if (typeof nodeOrSelector === 'string') { let temp = document.querySelectorAll(nodeOrSelector) for (let i = 0; i < temp.length; i++) { nodes[i] = temp[i] } nodes.length = temp.length } else if (nodeOrSelector instanceof Node) { nodes = { 0: nodeOrSelector, lenght: 1 } }
    #遍历nodes,给每一个元素添加上classes类 nodes.addClass
    = function (classes) { for (let i = 0; i < nodes.length; i++) { nodes[i].classList.add(classes) } }
    #遍历nodes,将每一个元素的文本设置成参数的内容 nodes.setText
    = function (text) { for (let i = 0; i < nodes.length; i++) { nodes[i].textContent = text } } return nodes; } window.$ = jQuery var $div = $('div') //获取div元素 $div.addClass('red') // 可将所有 div 的 class 添加一个 red $div.setText('Rony') // 可将所有 div 的 textContent 变为 Rony

    终上,通过对DOM方法的封装。实现了一个简单的jQuery功能,可以通过选择器,选到元素。再通过添加的API,对元素进行操作。

    优化Text函数

    nodes.Text = function (text) {
            if (text === undefined) {
                var texts = []
                for (let i = 0; i < nodes.length; i++) {
                    texts.push(nodes[i].textContent)
                }
                console.log(texts)
                return texts
            }
            else {
                for (let i = 0; i < nodes.length; i++) {
                    nodes[i].textContent = text
                }
            }
        }

    该函数,带参数情况下实现setText()的功能;不带参数的情况下,实现getText()的功能;

    如果不带参数,即text === undefined,则声明一个texts数组,将获取到的元素的文本放入texts数组中

    如果带有参数,则将每一个获取到的元素的文本修改为参数的内容

  • 相关阅读:
    【设计模式】6.模板方法模式
    【设计模式】5.原型模式
    【设计模式】4.工厂模式
    【设计模式】3.代理模式
    zookeeper集群的搭建
    zookeeper实现分布式锁的原理和一个小例子
    zookeeper配置管理实现原理----监听事件watch
    zookeeper的javaAPI操作(基于Curator的CRUD)
    java.lang.IllegalArgumentException: A HostProvider may not be empty!
    Zookeeper的安装和基本操作
  • 原文地址:https://www.cnblogs.com/ronyjay/p/9061623.html
Copyright © 2020-2023  润新知