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数组中

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

  • 相关阅读:
    【算法】剑指第二版面试题6 :从尾到头打印链表
    Go电商秒杀 (1)
    Go秒杀服务端优化
    Linux AUFS 文件系统
    mount挂载虚拟文件系统
    自己动手写docker之Linux命令(CentOS7.7)
    自己动手写docker之namespace和cgroup
    【协作式原创】自己动手写docker之urfave cli
    Go 1.14之前的死循环Case
    linux下定时执行任务的方法
  • 原文地址:https://www.cnblogs.com/ronyjay/p/9061623.html
Copyright © 2011-2022 走看看