zoukankan      html  css  js  c++  java
  • 实现一个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数组中

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

  • 相关阅读:
    一次router拦截器的应用
    node中的koa2
    node中从express到koa再到koa2的发展历程
    node中的crypto内置模块
    node中的http内置模块
    node中的stream(流)内置模块
    node中fs内置模块
    node 中的global对象和process对象
    CSS命名规范
    作品展示
  • 原文地址:https://www.cnblogs.com/ronyjay/p/9061623.html
Copyright © 2011-2022 走看看