自制jQuery函数实现修改元素样式及文本内容

源代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .red {
            color: red;
        }
    </style>
</head>

<body>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <script>
        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,
                    length: 1
                }
            }
            nodes.addClass = function (classes) {
                for (let i = 0; i < nodes.length; i++) {
                    nodes[i].classList.add(classes)
                }
            }
            nodes.setText = function (text) {
                for (let i = 0; i < nodes.length; i++) {
                    nodes[i].textContent = text
                }
            }
            return nodes
        }

        window.$ = jQuery
        var $div = $('div')
        $div.addClass('red') // 可将所有 div 的 class 添加一个 red
        $div.setText('hi') // 可将所有 div 的 textContent 变为 hi
    </script>
</body>
</html>

代码实现过程

  1. 首先window.jQuery创造全局的构造函数
  2. 先判断传入的参数是单个选择器还是多个选择器,如果是多个选择器则遍历它们放到新的伪数组中,如果是单个选择器,则直接将它放到伪数组中第 0 个的位置,并赋值 length 为 1
  3. 给元素追加样式:通过for循环遍历伪数组中的每一个元素,并给它们添加相应的样式,来给每一个元素追加样式
  4. 修改元素文本内容:同样用for循环遍历的方法遍历每个元素,并修改它们的文本内容
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 4,068评论 0 0
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,298评论 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,650评论 1 45
  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,451评论 0 44
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,367评论 0 2