一、Jquery入门(超详)

news2024/7/6 19:08:08
*   [5.3 jQuery 对象和 DOM 对象之间的相互转换](about:blank#53_jQuery__DOM__271)

*   *   [5.3.1 jQuery 对象转换为 DOM 对象](about:blank#531_jQuery__DOM__282)

    *   [5.3.2 DOM 对象转换为 jQuery 对象](about:blank#532_DOM__jQuery__295)
  • 六、 解决 jQuery 和其他库的冲突

  • 总结


前言

=====================================================================

本文将带领大家了解 jQuery 的定义,它有什么作用,我们为什么要学它,以及如何使用它,它的语法是什么,最后对比了 jQuery 对象和 DOM 对象的区别。

一、Jquery是什么?

===============================================================================

我们可以简单的理解为 jQuery 是一个 JavaScript 函数库。jQuery 是一个轻量级的"写的少,做的多"的 JavaScript 库。

它有如下的优势:

  • 轻量级
  • 强大的选择器
  • 出色的 DOM 操作的封装
  • 可靠的事件机制
  • 完善的 ajax
  • 不污染顶级变量。
  • 出色的浏览器兼容性。
  • 链式操作方式。
  • 隐式迭代。
  • 行为层与结构层的分离。
  • 丰富的插件支持。
  • 完善的文档。
  • 开源。

二、配置 jQuery 环境

=================================================================================

进入 jQuery 的官方网站 http://jquery.com/,可以下载最新的 jQuery 文件到本地,然后再引入到项目即可。官方网站如下所示:

在这里插入图片描述

引入代码示例:


<head>

  <script type="text/javascript" src="jquery.js"></script>

</head>



注意:这里的路径位置,请大家根据实际的情况自行调整。另外官方网站有两个版本的 jQuery 可供下载:一份是精简过的,另一份是未压缩的(供调试或阅读),请大家根据自己的需要自行选择下载。

当然如果我们不想把 jQuery 下载到本地,也可以使用 Google 的 CDN 或者使用 Microsoft 的 CDN:

使用 Google 的 CDN:

Google CDN 国内已经无法访问,以下内容仅作演示。


<head>

  <script

    type="text/javascript"

    src="http://ajax.googleapis.com/ajax/libs

/jquery/1.4.0/jquery.min.js"

  ></script>

</head>



使用 Microsoft 的 CDN:


<head>

  <script

    type="text/javascript"

    src="http://ajax.microsoft.com/ajax/jquery

/jquery-1.4.min.js"

  ></script>

</head>



三、jQuery 语法

==============================================================================

jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作。

基础语法是:


$(selector).action();



  • 美元符号 $ 定义 jQuery。

  • 选择符(selector)“查询”和“查找” HTML 元素。

  • jQuery 的 action() 执行对元素的操作。

另外需要注意的是:在 jQuery 库中 $ 符号就是 jQuery 的一个简写形式,例如 KaTeX parse error: Expected ‘EOF’, got ‘#’ at position 3: (“#̲lw”) 和 jQuery("….ajax 和 jQuery.ajax 是等价的,如果没有特别说明,程序中的 $ 符号都是 jQuery 的一个简写形式。

3.1 文档就绪函数


所有 jQuery 函数位于一个 document ready 函数中:


$(document).ready(function(){



});



// 可以简写成



$(funciton(){



});



这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码。如果在文档没有完全加载之前就运行函数,操作可能失败。下面是两个具体的例子:

  • 试图隐藏一个不存在的元素。

  • 获得未完全加载的图像的大小。

上面的这段代码其实有点类似于传统 JavaScript 中的 window.onload 方法,不过它们还是有一些区别的,简单对比如下所示:

| | window.onload | $(doucment).ready() |

| — | — | — |

| 执行时机 | 必须等待网页中所有的内容加载完毕后才能执行(包括图片) | 网页中所有 DOM 结构绘制完毕后就执行,可能 DOM 元素关联的东西并没有加载完 |

| 编写个数 | 不能同时编写多个。 | 能同时编写多个。 |

编写个数的意思就是:


window.onload = function () {

  alert("test1");

};

window.onload = function () {

  alert("test2");

};

//结果只会输出 test2。




$(document).ready(function () {

  alert("test1");

});

$(document).ready(function () {

  alert("test2");

});

//结果两次都输出



3.2 编写我们的第一个 jQuery 程序


例子:


<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8" />

    <title></title>

    <!-- Microsoft  的 CDN 的方式加载jQuery -->

    <head>

        <script

                type="text/javascript"

                src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js"

        ></script>

    </head>

</head>

<body>

<script type="text/javascript">

    //等待dom元素加载完毕

    $(document).ready(function () {

        //弹出一个框:显示hello world

        alert("hello world");

    });

</script>

</body>

</html>



请添加图片描述

四、 jQuery 代码风格

=================================================================================

良好的代码风格使得代码更加具有可读性,适当的注释代码,对于日后代码的维护也是非常有利的。来看个例子:


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8" />

    <title></title>

        <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js"></script>

  </head>

  <body>

    <div class="box">

      <ul class="menu">

        <li class="level1">

          <a href="#">春天</a>

          <ul class="level2">

            <li>春意盎然</li>

            <li>春意盎然</li>

            <li>春意盎然</li>

            <li>春意盎然</li>

          </ul>

        </li>

        <li class="level1">

          <a href="#">夏天</a>

          <ul class="level2">

            <li>夏日炎炎</li>

            <li>夏日炎炎</li>

            <li>夏日炎炎</li>

            <li>夏日炎炎</li>

          </ul>

        </li>

        <li class="level1">

          <a href="#">秋天</a>

          <ul class="level2">

            <li>秋高气爽</li>

            <li>秋高气爽</li>

            <li>秋高气爽</li>

            <li>秋高气爽</li>

          </ul>

        </li>

      </ul>

    </div>

    <script type="text/javascript">

      //等待dom元素加载完毕

      $(document).ready(function () {

        $(".level1>a").click(function () {

          $(this)

            .addClass("current")

            .next()

            .show()

            .parent()

            .siblings()

            .children("a")

            .removeClass("current")

            .next()

            .hide();

          return false;

        });

      });

    </script>

  </body>

</html>



代码很简单,我们没有加入 css 样式这些,主要还是讲解 jQuery,运行效果为:

请添加图片描述

简单解释一下这段代码,当鼠标点击到 a 标签的时候给其添加一个名为 current 的 class,然后调用 next() 和 show() 将其后面的元素显示出来,然后调用 parent()、siblings()、children(“a”) 将它的父辈的同辈元素的内部的子元素 a 都去掉一个名为 current 的 class (removeClass(“current”)),并且将紧邻它们后面的元素都隐藏。

这就是 jQuery 的强大的链式操作,一行代码就完成了我们导航栏的功能,大家可以试着去写一下原生的 JavaScript 代码,看看需要写多少行,这也就是我们 jQuery 的魅力所在。当然上面的那些方法看不懂也没关系,后面都会讲解的。不过为了进一步改善代码的可读性和可维护性,推荐一种写法:


$(document).ready(function () {

  $(".level1>a").click(function () {

    $(this)

      .addClass("current") //给当前元素添加"current"样式

      .next()

      .show() //下一个元素显示

      .parent()

      .siblings()

      .children("a")

      .removeClass("current") //父元素的同辈元素的子元素a移除"current"样式

      .next()

      .hide(); //它们的下一个元素隐藏

    return false;

  });

});



也就是说适当的换行和添加注释可以让我们对代码作用一目了然,增加代码的可读性,便于日后的维护,提高开发效率。

五、 jQuery 对象和 DOM 对象

=======================================================================================

5.1 DOM 对象


DOM (Document Object Model)对象,也就是我们经常说的文档对象模型,每一份 DOM 都可以表示成一棵 DOM 树:

在这里插入图片描述

比如这样的一段代码:


<h1></h1>

<p></p>

<ul>

  <li></li>

</ul>



h1,p,ul 以及 li 标签都是 DOM 元素节点,我们可以通过 JavaScript 中的 document.getElementById(),document.getElementsByTagName() 等来获取元素节点,像这样获取的 DOM 元素就是 DOM 对象,DOM 对象可以使用 JavaScript 中的方法,比如:


var domObj = document.getElementById("id"); //获取DOM对象

var objHtml = domObj.innerHTML; //使用JavaScript中的属性innerHTML



5.2 jQuery 对象


jQuery 对象就是通过 jQuery 包装 DOM 对象后产生的对象。jQuery 对象是 jQuery 独有的,如果一个对象是 jQuery 对象,那么它就可以使用 jQuery 里的方法,比如:


$("#xnm").html(); //获取id为syl的元素内的html代码,html()是jQuery中的方法



这段代码等同于:


document.getElementById("xnm").innerHTML;



在 jQuery 对象中无法使用 DOM 对象中的任何方法,例如 $(“#xnm”).innerHTML; 之类的写法是错的,可以使用 $(“#xnm”).html(); 之类的 jQuery 方法来代替,同样的道理,DOM 对象也不能使用 jQuery 里的方法,例如:document.getElementById(“xnm”).html();也是会报错的。

注:用 #id 作为选择符取得的是 jQuery 对象而并非 document.getElementById(“id”); 所得到的 DOM 对象,两者并不等价。我们一定要从开始就树立这样的一个观念:jQuery 对象和 DOM 对象是有区别的,它们并不是等价的。

5.3 jQuery 对象和 DOM 对象之间的相互转换


在讲解 jQuery 对象和 DOM 对象之间的相互转换之前,我们先约定好定义变量的风格,如果获取的是 jQuery 对象,那么我们在变量前面加上 $ 符号,例如:


var $test = jQuery 对象;

#### 算法刷题

大厂面试还是很注重算法题的,尤其是字节跳动,算法是问的比较多的,关于算法,推荐《LeetCode》和《算法的乐趣》,这两本我也有电子版,字节跳动、阿里、美团等大厂面试题(含答案+解析)、学习笔记、Xmind思维导图均可以分享给大家学习。



![](https://img-blog.csdnimg.cn/img_convert/c582a01373152bb4cd38bc6ad5cc8027.png)



**写在最后**

**最后,对所以做Java的朋友提几点建议,也是我的个人心得:**

1.  疯狂编程

2.  学习效果可视化

3.  写博客
4.  阅读优秀代码
5.  心态调整


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1858784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RT-Thread的Finsh实现学习

学习原因 工作中&#xff0c;使用同事开发的调试软件&#xff0c;输入参数打印的函数名就可以打印参数&#xff0c;但看不到代码实现&#xff0c;只能用自己微薄的知识积累去猜一下&#xff0c;之前尝试过&#xff0c;专门写一个函数&#xff0c;去解析编译生成的map文件&#…

【漏洞复现】脸爱云一脸通智慧管理平台 SystemMng 管理用户信息泄露漏洞(XVE-2024-9382)

0x01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大&#xff0c;运行稳定&#xff0c;操作简单方便&#xff0c;用户界面美观&#xff0c;轻松统计数据的一脸通系统。无需安装&#xff0c;只需在后台配置即可在浏览器登录。 功能包括:系统管理中心、人员信息管理中心、设备…

【TensorRT】TensorRT C# API 项目更新 (2):优化安装方式和代码

1. 项目介绍 NVIDIA TensorRT™ 是一款用于高性能深度学习推理的 SDK&#xff0c;包括深度学习推理优化器和运行时&#xff0c;可为推理应用程序提供低延迟和高吞吐量。基于 NVIDIA TensorRT 的应用程序在推理过程中的执行速度比纯 CPU 平台快 36 倍&#xff0c;使您能够优化在…

【MySQL】数据库——事务

一.事务概念 事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这一组数据库命令要么都执行&#xff0c;要么都不执行事务是一个不可分割的工作逻辑单元&#xff0c;在数…

小白学python(第一天)

在有了C语言的基础后&#xff0c;我们学python会变得相当容易&#xff0c;毕竟c生万物&#xff0c;废话不多说&#xff0c;直接进入我们的正题 课前准备 Python环境的搭建以及Pycharm的安装 python环境安装 Download Python | Python.org 因为我的电脑是windows&#xff0c;…

Idea启动服务报 Command line is too long

一、背景 合不同分支代码后&#xff0c;启动服务报 Error running Application, Command line is too long, Shorten the command line via JAR manifest or via a classpath file and rerun. 没有在意&#xff0c;然后点击了manifest 来进行 二、问题 然后自己在重新启动&…

终于有人说清楚CIF术语了‼️

什么是CIF&#xff1f; CIF&#xff0c;全称Cost, Insurance, and Freight (成本、保险费加运费)&#xff0c;是一种国际贸易术语&#xff0c;用于海运和内河运输。按照CIF条款&#xff0c;卖方的交货义务在装运港当货物越过船舷时完成&#xff0c;但卖方需承担将货物运至指定…

Hive基础知识(十八):Hive 函数的使用

1. 系统内置函数 1&#xff09;查看系统自带的函数 hive (hive3)> show functions; Time taken: 0.085 seconds, Fetched: 289 row(s) 2&#xff09;显示自带的函数的用法 hive (hive3)> desc function upper; OK tab_name upper(str)- Returns str with all characters…

this.$prompt 提示框增加文本域并修改文本域高度

2024.06.24今天我学习了如何对提示框增加文本域的方法&#xff0c;效果如下&#xff1a; 代码如下&#xff1a; <script>methods:{reject_event(){this.$prompt(驳回内容, 提示, {confirmButtonText: 确定,cancelButtonText: 取消,inputType: textarea,inputPlaceholder…

手工微调embedding模型,让RAG应用检索能力更强

BAAI/bge-small-en 目前HuggingFace的MTEB(海量文本Embedding基准)排行榜上排名第一的Embedding模型是big-large-en&#xff0c;它由北京人工智能研究院(BAAI&#xff0c;智源)开发。它是一种预训练的transformer模型&#xff0c;可用于各种自然语言处理任务&#xff0c;如文本…

Elasticsearch 索引与文档操作实践指南

上节我们部署了elasticsearch8.4.1和kibana8.4.1以及ik分词器&#xff0c;本节我们来学习下elasticsearch的相关索引&#xff0c;文档操作。 首先我们kinana的主界面找到开发者工具在里面我们来编写相关操作。 标题查看集群情况 GET /_cluster/health详细解释&#xff1a; …

一切前端概念,都是纸老虎

4、listener可以通过 store.getState() 得到当前状态。如果使用的是 React&#xff0c;这时可以触发重新渲染 View。 function listerner() { let newState store.getState(); component.setState(newState); } 对比 Flux 和 Flux 比较一下&#xff1a;Flux 中 Store 是…

机器人控制系列教程之串联机器人工作空间

简介 在机器人学领域&#xff0c;对机器人工作空间的精确分析是实现高效、安全操作的关键。工作空间是指机器人末端执行器在不与环境或其他物体发生碰撞的情况下能够到达的所有位置的集合。为了求解这一空间&#xff0c;研究者们发展了多种方法&#xff0c;包括作图法、蒙特卡…

【因果推断python】53_效应异质性和非线性带来的挑战1

目录 Treatment Effects on Binary Outcomes 合成一些数据 由于缺乏基本事实&#xff0c;在单位层面预测治疗效果极为困难。因为我们只能观察到一个潜在结果 T(t) &#xff0c;我们无法直接估计它。相反&#xff0c;我们必须依靠目标变换&#xff08;也可以看作是设计巧妙的损…

基于Pytorch框架构建ResNet模型

Pytorch 一、训练模型1.导入资源包2.定义数据预处理3.读取数据 二、定义卷积神经网络1.导入必要的库2.定义名为convolutional_block的卷积块类3.定义了一个名为identity_block的恒等块类4.定义了一个名为Resnet的深度卷积神经网络类 三、创建模型1. 检查GPU设备2. 训练过程 四、…

编译原理大题自解(活前缀DFA、LR(0)分析表)

目录 4. (简答题) &#xff08;1&#xff09;给出识别活前缀的DFA &#xff08;2&#xff09;设计此文法的 LR(0)分析表 第一种解法 第二种解放 首先声明这是作者的写法&#xff08;不保证正确&#xff01;&#xff09;仅供参考。本题因为可能存在冲突的原因&#xff0c;所…

【C语言小例程26/100】

题目&#xff1a;有一分数序列&#xff1a;2/1&#xff0c;3/2&#xff0c;5/3&#xff0c;8/5&#xff0c;13/8&#xff0c;21/13...求出这个数列的前20项之和。 程序分析&#xff1a;请抓住分子与分母的变化规律。 程序源代码&#xff1a; #include <stdio.h>int ma…

windows上运行arm32架构的安卓模拟器

说明 主要功能&#xff1a;在win10上研究和学习32位arm汇编指令的执行 环境如下 主机环境: windows10 目标模拟器环境:armeabi-v7a调试环境搭建 1、下载android studio 下载地址&#xff1a;https://developer.android.com/studio?hlzh-cn 2、安装android studio 直接下…

互联网应用主流框架整合之Spring Boot开发

Spring Boot数据库开发 通常SpringBoot数据库开发&#xff0c;会引入spring-boot-starter-jdbc&#xff0c;而如果引入了spring-boot-starter-jdbc&#xff0c;但没有可用的数据源或者没有配置&#xff0c;那么在运行Spring Boot时会出现异常&#xff0c;因为spring-boot-star…

思考-生涯思考-GPT-5对人们的影响

GPT-5 一年半后发布&#xff1f;对此你有何期待&#xff1f; IT之家6月22日消息&#xff0c;在美国达特茅斯工程学院周四公布的采访中&#xff0c;OpenAI首席技术官米拉穆拉蒂被问及GPT-5是否会在明年发布&#xff0c;给出了肯定答案并表示将在一年半后发布。此外&#xff0c;…