首页 > 其他分享 >[jQuery] $(this) 是什么

[jQuery] $(this) 是什么

时间:2024-10-03 22:24:15浏览次数:9  
标签:jQuery function elements 什么 selector fn 构造函数

前言

$(this) 就是把 DOM 对象传递给 jQuery 构造器中,通过 jQuery 对象让我们可以使用 jQuery 的 html()css() 等一系列函数操作 DOM 元素。

<button id="btn">Click Me</button>
<script src="path/to/jquery.js"></script>
<script>
  $('#btn').click(function() {
    $(this).css('background-color', 'blue').text('Clicked!');
  });
</script>

在这个示例中,$(this)thisthis 将会指向被点击的按钮)封装成一个 jQuery 对象,然后可以调用 csstext 方法来修改按钮的样式和文本内容。

简化的 jQuery 构造函数

// 定义 jQuery 构造函数
function jQuery(selector) {
  // 创建一个新的 jQuery 实例
  return new jQuery.fn.init(selector);
}

// 定义 jQuery 的原型对象
jQuery.fn = jQuery.prototype = {
  constructor: jQuery,
  init: function(selector) {
    // 检查传入的参数类型
    if (typeof selector === 'string') {
      // 如果是选择器字符串,使用 document.querySelectorAll 获取 DOM 元素
      this.elements = document.querySelectorAll(selector);
    } else if (selector.nodeType) {
      // 如果是 DOM 元素,直接将其封装到 elements 数组中
      this.elements = [selector];
    } else if (Array.isArray(selector)) {
      // 如果是数组,直接赋值
      this.elements = selector;
    } else {
      // 其他情况,初始化为空数组
      this.elements = [];
    }

    // 返回当前实例,支持链式调用
    return this;
  },

  // 定义一些常用的方法
  css: function(property, value) {
    for (let i = 0; i < this.elements.length; i++) {
      this.elements[i].style[property] = value;
    }
    return this; // 支持链式调用
  },

  text: function(content) {
    for (let i = 0; i < this.elements.length; i++) {
      this.elements[i].textContent = content;
    }
    return this; // 支持链式调用
  },

  on: function(eventType, handler) {
    for (let i = 0; i < this.elements.length; i++) {
      this.elements[i].addEventListener(eventType, handler);
    }
    return this; // 支持链式调用
  }
};

// 为了让 jQuery 实例可以使用 jQuery.prototype 上的方法
jQuery.fn.init.prototype = jQuery.fn;

// 全局变量 $
window.$ = window.jQuery = jQuery;
  1. 构造函数 jQuery
  • jQuery 构造函数接受一个参数 selector,并返回一个新的 jQuery 实例。
  • 使用 new jQuery.fn.init(selector) 创建一个新的实例。
  1. 原型对象 jQuery.fn
  • jQuery.fnjQuery.prototype 的别名,用于定义 jQuery 实例的方法。
  • init 方法是实际的构造函数,负责初始化 jQuery 实例。
  1. 全局变量 $jQuery
  • jQuery 函数赋值给全局变量 $jQuery,以便在全局范围内使用。

标签:jQuery,function,elements,什么,selector,fn,构造函数
From: https://www.cnblogs.com/Himmelbleu/p/18446076

相关文章

  • 01-什么是逻辑?
      感觉 知觉  感性认识理性认识    感觉知觉表象形象思维 ==》概念在感性认识的基础上,人们通过抽象与概括,舍弃个别事物表面的、次要的属性,而把握住一类事物特有的、共同的、本质的属性,于是就形成了反映事物的概念。直观性与个别性是感觉、知觉与表......
  • 为什么选择使用接口(如List)而不是具体实现(如ArrayList)来声明集合变量?-AI
    为什么选择使用接口(如List)而不是具体实现(如ArrayList)来声明集合变量?在Java编程中,集合框架是一个强大且灵活的工具,它允许我们存储和操作一组对象。当我们需要创建一个集合时,一个常见的问题是:应该使用具体的实现类(如ArrayList)还是使用更一般的接口(如List)来声明变量?一、使用接口的......
  • 私家车开车回家过节会发生什么事情
     自驾旅行或者是自驾车回家过节路程太远。长途奔袭的私家车损耗很大。新能源汽车开始涉足电力系统和燃电混动的能源供应过渡方式。汽车在路途中出现零件故障。计划的出发日程天气原因。台风是否会提醒和注意。汽车的油站供应链和电力充电桩的漫长充电过程。高速公路的收费站和不......
  • jQuery-Mobile-高级教程-全-
    jQueryMobile高级教程(全)原文:ProjQueryMobile协议:CCBY-NC-SA4.0零、简介我们目前正在见证企业和个人构建和分发移动应用的方式的转变。最初的策略是为每个主要平台构建单独的原生应用。然而,团队很快意识到维护多个平台是不可持续的,因为移动团队失去了灵活性。可以一次......
  • 38_初识搜索引擎_用一个例子告诉你mapping到底是什么
    插入几条数据,让es自动为我们建立一个索引PUT/website/article/1{"post_date":"2017-01-01","title":"myfirstarticle","content":"thisismyfirstarticleinthiswebsite","author_id":11400}PUT/w......
  • Mockito 是借助什么技术来 mock final 类和 final 方法的
    Mockito借助JavaAgent和字节码操作技术来实现对final类和final方法的mock。具体来说,它主要依赖于以下两个关键技术:1.JavaAgent(InstrumentationAPI)Mockito通过使用JavaAgent来实现运行时的字节码操作,这允许在程序加载类时修改类的字节码行为,从而突破final......
  • 28_分布式文档系统_阶段性总结以及什么是distributed document store
    1、阶段性总结1~8讲:快速入门了一下,最基本的原理,最基本的操作9~13讲:在入门之后,对ES的分布式的基本原理,进行了相对深入一些的剖析14~27讲:围绕着document这个东西,进行操作,进行讲解和分析2、什么是distributeddocumentstore到目前为止,你觉得你在学什么东西,给大家一个直观的感觉......
  • 02_用大白话告诉你什么是Elasticsearch
    大白话、什么是ElasticsearchElasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统1、什么是搜索?2、如果用数据库做搜索会怎么样?3、什么是全文检索、倒排索引和Lucene?4、什么是Elasticsearch?1、什么是搜索?百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比......
  • Protobuf 为什么这么快?解密它背后的高效编码机制与 C++ 实践
    目录1.Protobuf的基本使用1.1定义`.proto`文件1.2生成C++代码2.Protobuf的二进制编码机制2.1Varint编码:更少的字节,更高的效率2.2字段编号与键:精准定位每个数据3.C++序列化与反序列化示例3.1序列化示例3.2反序列化示例4.性能对比与优化分析4.1数据......
  • MySql学习笔记:什么是数据库?
    数据库的概念:         数据库(Database),简而言之可视为数字化的文件柜,是一个长期储存在计算机内有组织的、统一管理的数据集合,用于存储和管理大量相关信息。        数据库是一个按数据的结构来存储和管理数据的计算机系统,也就是说,数据库通常有两方面含义:......