当前位置: 首页 > news >正文

前端——Ajax和jQuery

一、Ajax

Ajax即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),  通过 JS 异步的向服务器发送请 求并接收响应数据。

同步访问:当客户端向服务器发送请求时,服务器在处理的过程中,浏览器只能等待,效率较低。

异步访问:当客户端向服务器发送请求时,服务器在处理的过程中,客户端可以做其他的操作,不需要一直等待。

创建ajax实例  

 let xhr = new XMLHttpRequest();

创建请求

method:请求方式,取值'GET' 或 'POST'

url:请求地址,字符串。

xhr.open(method,url);

 发送请求  

        xhr.send()

响应请求  

        xhr.onload = function(){

          //判断 你请求服务器的状态是否为200  200的状态码表示成功

          if(xhr.status === 200){

            console.log(xhr.response);

          }  

        }

二、jQuery

1.jQuery介绍

jQuery是JavaScript的工具库,对原生JavaScript中的DOM操作、事件处理、包括数据处理和Ajax技术等进行封装,提供更完善,更便捷的方法。

2.工厂函数 - $()

"$()"函数用于获取元素节点,创建元素节点或将原生JavaScript对象转换为jquery对象,返回 jQuery 对象。jQuery 对象实际是一个类数组对象,包含了一系列jQuery 操作的方法。

原生JavaScript对象与jQuery对象的属性和方法不能混用。可以根据需要,互相转换 :

1. 原生JavaScript转换jQuery对象

    $(原生对象),返回 jQuery 对象

2. jQuery对象转换原生JavaScript对象

    - 方法一 : 根据下标取元素,取出即为原生对象

        var div = $("div")[0];

    - 方法二 : 使用jQuery的get(index)取原生对象

        var div2 = $("div").get(0);

3.jQuery获取元素

jQuery通过选择器获取元素,$("选择器")

标签选择器:$("div")

ID 选择器:$("#d1")

类选择器:$(".c1")

群组选择器:$("body,p,h1")

后代选择器: $("div .c1")

子代选择器: $("div>span")

相邻兄弟选择器: $("h1+p")  匹配选择器1后的第一个兄弟元素,同时要求兄弟元素满足选择器2

通用兄弟选择器: $("h1~h2") 匹配选择器1后所有满足选择器2的兄弟元素

过滤选择器,需要结合其他选择器使用。

:first

  匹配第一个元素 例:$("p:first")

:last

  匹配最后一个元素 例:$("p:last")

:odd

  匹配奇数下标对应的元素

:even

  匹配偶数下标对应的元素

:eq(index)

  匹配指定下标的元素

:lt(index)

  匹配下标小于index的元素

:gt(index)

  匹配下标大于index的元素

:not(选择器)

  否定筛选,除()中选择器外,其他元素

示例代码:

<script>// jQuery 是 JavaScript的工具库   对原生js代码中方法 进行封装  dom操作  事件处理   包含数据处理和ajax技术等进行了封装   提供了完善的更加简单的方法   // 直接 使用 $() 来获取元素  console.log($('box')); // 返回结果是JQuery对象  // JQuery对象 转为原生js对象  // let box =$('.box')[0];// console.log(box);// 或者let box =$('.box').get(0);console.log(box);// 通过.css修改文字颜色  $('.box').css('color','red')</script>

4.操作元素内容

// 设置或读取标签内容,等价于原生innerHTML,可识别标签语法

html()

// 设置或读取标签内容,等价于innerText,不能识别标签

text()

// 设置或读取表单元素的值,等价于原生value属性

val()

示例代码:

 <script src='./jquery.js'></script><script>// html()等价于  原生 innerHTML 可识别标签  $('.wrap').html('<h2>明天星期五了</h2>')// 插入文本 $('p').text('搞学习了')// 原生js  读取input控件里面的值 直接.value    // console.log(inp.value);//jquery版获取表单控件里面的内容 console.log($('input').val());// 点击button按钮 把我在input输入框的内容  弹出来 $('button').click(function(){console.log($('input').val());})</script>

5.操作标签属性

1. attr("attrName","value")

    设置或读取标签属性

2. prop("attrName","value")

    设置或读取标签属性

    注意 :在设置或读取元素属性时,attr()和prop()基本没有区别;但是在读取或设置表单元素(按钮)的选中状态时,必须用prop()方法,attr()不会监听按钮选中状态的改变,只看标签属性checked是否书写

3. removeAttr("attrName")

    移除指定属性

示例代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><!-- <input type="text" name='你好' id='check'> --><input type="checkbox" name='你好' id='check'><input type="submit" id='sub'><img  alt="你图片没了" src="https://img2.baidu.com/it/u=2425084553,971201481&fm=253&fmt=auto&app=138&f=JPEG?w=889&h=500" alt=""><script src='./jquery.js'></script><script>// 设置读取标签的属性  console.log($('#check').attr('name'));//读取这个标签的name属性// 给 value属性 设置了内容: 我输入了什么//    console.log($('#check').attr('value','我输入了什么'));//prop 读取或设置属性  //    alert($('#check').prop('value'))//attr 读取或设置属性  //    alert($('#check').attr('value'))$('#sub').click(function () {// 会监听你的点击状态// alert($('#check').prop('value'))//on表示选中// alert($('#check').attr('value'))//弹出  undefined 不会监听你按钮选中状态})// 删除属性$('img').removeAttr('src')</script></body></html>

6.操作标签样式

1. 针对类选择器,提供操作class属性值的方法

// 添加指定的类名

addClass("className")

// 移除指定的类型,如果参数省略,表示清空class属性值

removeClass("className")

// 如果当前元素存在指定类名,则移除;不存在则添加

toggleClass("className")

2. 操作行内样式

// 设置行内样式

css("属性名","属性值")  

// 设置一组CSS样式

css(对象)

示例代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>*{margin: 0px;padding: 0px;list-style: none;}.box{width: 300px;height: 300px;background-color: orange;}.wrap{background-color: pink;}.list{width: 400px;height: 80px;background-color: pink;margin: auto;}.list>li{float: left;width: 100px;height: 80px;background-color: gray;color: orange;text-align: center;line-height: 80px;/* 变成小手 */cursor: pointer;}.list>.only{background-color:  #096;}</style>
</head>
<body><div class='text wrap'></div><ul class='list'><li>英雄联盟</li><li>王者荣耀</li><li>永劫无间</li><li class='only'>原神</li></ul><p>我是文本标签</p><script src='./jquery.js'></script><script>// 添加指定类名  $('div').addClass('box')//删除指定类名    如果参数忽略不写 那就清空class属性值  // $('div').removeClass()// 如果当前标签有这个类名那就删掉  无则加 $('div').toggleClass('wrap')$('.list>li').click(function(){// 移除li标签里面用only类名  $('.list>li').removeClass('only');// this指向你当前点击的这个元素   // $(this).addClass('only');$(this).toggleClass('only')})// 操作元素 添加样式   $('元素').css('属性','属性值')  写多个就直接继续后面用.css方法 麻烦 // $('p').css('color','pink').css('font-size','20px')// 快捷写多个属性 就写对象属性  $('p').css({'width':'200px','height':'300px','background-color':'green'})</script>
</body>
</html>

049a9a905a9a4ed4935c4c7142dc8a3c.png

7.元素的创建,添加,删除

1. 创建:使用$("标签语法"),返回创建好的元素

// 创建元素

let div = $("<div></div>");

// 设置内容和属性

div.html("动态创建").attr("id","d1").css("color","red");

let h1 = $("<h1 id='d1'>一级标题</h1>")

2. 作为子元素添加

// 在$obj的末尾添加子元素newObj

$obj.append(newObj);

// 作为第一个子元素添加至$obj中

$obj.prepend(newObj);

3. 作为兄弟元素添加

// 在$obj的后面添加兄弟元素

$obj.after(newObj);

// 在$obj的前面添加兄弟元素

$obj.before(newObj);

4. 移除元素

// 移除$obj

$obj.remove();  

示例代码:

<script>// 创建新的span标签 let span = $('<span></span>');// 添加到我的div标签里面   作为最后一个子元素添加  // $('div').append(span)// 作为第一个子元素进行添加 // $('div').prepend(span)// before() 作为同级元素进行插入  在前面插入 $('div').before(span)// after() 作为同级元素进行插入  在后面插入 $('div').after(span)// 设置内容  添加类名 颜色 span.html('我是刚刚新建的span标签').attr('class','text').css('color','green')// 删除元素$('div').remove()</script>

8.动画效果

1. 显示和隐藏

     show(speed,callback)/hide(speed,callback)

    - speed   可选。规定元素从隐藏到完全可见的速度。默认为 "0"。

    - callback   可选。show 函数执行完之后,要执行的函数

2. 通过使用滑动下拉和上推效果,显示隐藏的被选元素( **只针对块元素** )

     slideDown(speed,callback)/slideUp(speed,callback)

3. 通过使用淡隐淡现方式显示效果,显示隐藏的被选元素

     fadeOut(speed,callback)/fadeIn(speed,callback)

   

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box {width: 300px;height: 300px;background-color: skyblue;}</style></head><body><div class="box"></div><button class='btn1'>隐藏</button><button class='btn2'>上推</button><button class='btn3'>若隐</button><script src='./jquery.js'></script><script>$('.btn1').click(function () {// // 点击隐藏按钮 box盒子就隐藏 // $('.box').hide(1000,function(){//     // 隐藏之后  按钮的文字 替换成 显示 //     $('.btn1').text('显示')// })// 如果字是隐藏就执行隐藏功能  否则就执行显示   if ($('.btn1').text() === '隐藏') {$('.box').hide(1000, function () {// 隐藏之后  按钮的文字 替换成 显示 $('.btn1').text('显示')})} else {// 不是就执行显示功能   $('.box').show(1000, function () {//显示状态下把文字 替换成 隐藏$('.btn1').text('隐藏')})}})// 上推和下拉效果  $('.btn2').click(function () {//slideUp上推方法 相当于把盒子高度 变为0 了 // $('.box').slideUp(1000, function () {//     $('.btn2').text('下拉')// })// 如果字按钮文字是上推就执行上推效果  if ($('.btn2').text() === '上推') {$('.box').slideUp(1000, function () {$('.btn2').text('下拉')})} else {// slideDown下拉方法$('.box').slideDown(1000, function () {$('.btn2').text('上推')})}})//若隐若现效果$('.btn3').click(function () {// 如果字按钮文字是若隐就执行若隐效果  if ($('.btn3').text() === '若隐') {// fadeOut若隐方法$('.box').fadeOut(1000, function () {$('.btn3').text('若现')})} else {// fadeIn若现方法$('.box').fadeIn(1000, function () {$('.btn3').text('若隐')})}})</script></body></html>

9.数据与对象遍历

1. $(selector).each() 方法规定为每个匹配元素规定运行的函数

    $(selector).each(function(index,element){})

    - *index* - 选择器的 index 位置

    - element - 当前的元素

2. $.each()函数是框架提供的一个工具类函数,通过它,你可以遍历对象、数组的属性值并进行处理。

    $.each(Object, function(index, data){});

    - *index* - 选择器的 index 位置

    - data- 当前的数据

10.jQuery事件处理

文档加载完毕原生JavaScript 方法:window.onload

$(function(){

  // 文档加载完毕后执行

})

区别:原生onload事件不能重复书写,会产生覆盖问题;jquery中对事件做了优化,可以重复书写ready方法,依次执行

$("div").on("click",function(){});

$("div").click(function(){});  

 

相关文章:

前端——Ajax和jQuery

一、Ajax Ajax即“Asynchronous Javascript And XML”&#xff08;异步 JavaScript 和 XML&#xff09;&#xff0c; 通过 JS 异步的向服务器发送请 求并接收响应数据。 同步访问&#xff1a;当客户端向服务器发送请求时&#xff0c;服务器在处理的过程中&#xff0c;浏览器…...

C++-vector模拟实现

###vector底层相当于是数组&#xff0c;查看源码可以发现&#xff0c;这个类的私有成员变量是三个迭代器&#xff1b;在实现时迭代器就可以当作是vector里面的元素的指针类型&#xff1b; ###vector是一个类模板&#xff0c;实现时也应当按照这样的写法用一个模板去实现&#…...

Activity

69[toc] 1.启停活动页面 1.Activity启动和结束 从当前页面跳到新页面 startActivity(new Intent(this, ActFinishActivity.class));从当前页面返回上一个页面&#xff0c;相当于关闭当前页面 finish();2.Activity生命周期 官方描述生命周期 onCreate&#xff1a;创建活…...

【力扣 | SQL题 | 每日四题】力扣1581, 1811, 1821, 1831

今天的题目就1811这个比较难&#xff0c;其他非常的基础。 1. 力扣1581&#xff1a;进店却未进行过交易的顾客 1.1 题目&#xff1a; 表&#xff1a;Visits ---------------------- | Column Name | Type | ---------------------- | visit_id | int | | customer…...

洛谷【P1955 [NOI2015] 程序自动分析】

反思&#xff1a; 这道题一眼就是并查集 但是数据太大 mle和re都是有可能的我看了题解才知道是离散化数组加并查集离散化再两个月前我觉得好难啊 那道题跟本看不懂 现在觉得还行 离散化思路&#xff1a; 需要一个离散记录数组----ls[N]用来记录下出现的数 步骤&#xff1a; …...

Swift并发笔记

1.同步和异步 说到线程的执行方式&#xff0c;最基本的一组概念是同步和异步。所谓同步&#xff0c;就是在操作执行完成之前&#xff0c;运行操作的这个线程都会被占用&#xff0c;直到函数最终被抛出或返回。Swift5.5之前&#xff0c;func关键字声明的所有的函数都是同步的。…...

React 组件命名规范

在 React 项目中&#xff0c;如果希望保持组件命名的一致性&#xff0c;并防止在引入时出现不同名称的问题&#xff0c;可以遵循以下的组件规范&#xff1a; 1、默认导出组件&#xff1a; 所有特殊要求的组件&#xff08;如页面组件或根组件&#xff09;应该使用 export defau…...

eNSP网络配置指南:IP设置、DNS、Telnet、DHCP与路由表管理

1.eNSP基本操作和路由器IP配置命令 登录设备&#xff1a;通过Console口或通过eNSP的Telnet/SSH客户端登录到设备。进入特权模式&#xff1a;输入system-view进入系统视图。接口配置&#xff1a; 进入接口视图&#xff0c;例如interface GigabitEthernet0/0/0。配置IP地址和子网…...

初步认识产品经理

产品经理 思考问题的维度 1️⃣为什么要抓住核心用户&#xff1f; 所有和产品有关系的群体就是用户&#xff0c;存在共性和差异了解用户的付费点&#xff0c;更好的优化产品是否使用&#xff1a;&#xff08;目标用户-已使用产品&#xff1a;种子用户-尝鲜&#xff1b;核心用…...

web前端面试中拍摄的真实js面试题(真图)

web前端面试中拍摄的真实js面试题&#xff08;真图&#xff09; WechatIMG258.jpeg WechatIMG406.jpeg WechatIMG407.jpeg WechatIMG922.jpeg WechatIMG1063.jpeg © 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点赞、收藏、关注哦&#xff01;&#xff01;…...

python 人工智能 机器学习 当损失函数的数值变成 `nan` 时,这通常意味着在模型训练过程中出现了数值不稳定性以及解决办法,数据分析

当损失函数的数值变成 nan 时&#xff0c;这通常意味着在模型训练过程中出现了数值不稳定性。以下是一些可能导致这个问题的原因以及相应的解决方法&#xff1a; 1. **学习率过高**&#xff1a;如果学习率设置得过高&#xff0c;可能会导致梯度爆炸&#xff0c;从而导致损失函…...

Kafka快速实战与基本原理详解

笔记:https://note.youdao.com/ynoteshare/index.html?id=b0357bdb4821ed2e35ecdbdacd65aa06&type=note&_time=1727570043631 启动kafka之前先启动zookper 看看ZK里面都有什么数据 : 刚开始什么数据都没有 接下来启动kafka,启动好后,日志在这里看: 启动好了kaf…...

tftp传文件被服务器拒绝进入tftp: server error: (768) Access to staonline.pcap denied

环境&#xff1a;测试一个ac下挂ap&#xff0c;ap下的抓包文件传出时&#xff0c;出现问题&#xff1a; ac的wan口ip是192.168.186.167/24&#xff0c;gw是192.168.186.1&#xff0c;下挂ap的ip是192.168.202.199/24&#xff0c;ac上开子接口192.168.202.1/24&#xff0c;ac上开…...

express,生成用户登录后的 token

在 Node.js 中使用 Express 框架生成用户登录后的 token&#xff0c;通常会涉及到以下几个步骤&#xff1a; 设置 Express 应用&#xff1a;首先&#xff0c;你需要有一个基本的 Express 应用。安装必要的中间件&#xff1a;例如 jsonwebtoken&#xff08;JWT&#xff09;用于…...

银河麒麟桌面操作系统修改默认Shell为Bash

银河麒麟桌面操作系统修改默认Shell为Bash &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 在银河麒麟桌面操作系统&#xff08;ARM版&#xff09;中&#xff0c;若要将默认Shell从Dash改为Bash&#xff0c;可执行以下步骤&#xff1a; 打开…...

卷积神经网络(Convolutional Neural Networks, CNN)

卷积神经网络&#xff08;Convolutional Neural Networks, CNN&#xff09;是深度学习领域中用于处理具有网格结构的输入&#xff08;如图像和视频&#xff09;的神经网络模型。下面以最简单、直观的方式概述CNN的主要流程及其基本概念&#xff1a; 1. 输入层 概念&#xff1a…...

SpringBoot系列 启动流程

文章目录 SpringApplicationSpringApplication#run 启动流程BootstrapContextSpringApplicationRunListenersprepareEnvironmentconfigureEnvironmentconfigurePropertySourcesconfigureProfiles 上下文初始化prepareContextrefreshContextprepareRefreshobtainFreshBeanFactor…...

vgg19提取特征

一般来说&#xff0c;大家使用VGG16&#xff0c;用的是第四列的网络架构&#xff0c;而使用VGG19&#xff0c;使用的就是第六列的网络架构。 使用vgg进行提取特征&#xff0c;在这个项目中&#xff0c;使用的就是每一块卷积层的第一层。 import torch.nn as nn from torchvis…...

Qt 中的 QChartView

深入理解 Qt 的 QChartView&#xff1a;图表展示与交互 QChartView 是 Qt Charts 模块中的一个核心类&#xff0c;它用于在 Qt 应用程序中显示图表&#xff0c;并支持多种用户交互方式。它继承自 QGraphicsView&#xff0c;通过封装 QChart&#xff0c;为用户提供了强大的图表…...

cheese安卓版纯本地离线文字识别插件

目的 cheese自动化平台是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务&#xff0c;节省大量人工操作的时间。可以采用Vscode、IDEA编写&#xff0c;支持Java、Python、nodejs、GO、Rust、Lua。cheese也包含图色功能&#xff0c;识别…...

5个关键技巧:掌握AutoJs6界面布局设计的最佳实践

5个关键技巧&#xff1a;掌握AutoJs6界面布局设计的最佳实践 【免费下载链接】AutoJs6 安卓平台 JavaScript 自动化工具 (Auto.js 二次开发项目) 项目地址: https://gitcode.com/gh_mirrors/au/AutoJs6 AutoJs6作为安卓平台领先的JavaScript自动化工具&#xff0c;其界面…...

Gemini应用商店曝光量暴跌?3步诊断+5个隐藏算法漏洞修复指南

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini应用商店曝光量暴跌&#xff1f;3步诊断5个隐藏算法漏洞修复指南 近期大量开发者反馈 Gemini 应用商店自然曝光量断崖式下跌&#xff0c;部分应用 7 日内曝光下降超 68%&#xff0c;但后台数据未…...

第13天:常用数据结构之字典

Python学习100天(从入门到精通系列文章) 文章目录 Python学习100天(从入门到精通系列文章) 前言 一、为什么需要字典? 1.1 列表、元组、集合的局限性 1.2 字典的优势 二、创建和使用字典 2.1 使用字面量语法创建字典 2.2 使用 dict 函数创建字典 三、字典的常用操作 3.1 访…...

ChatGPT 2026安全增强套件发布:内置FIPS 140-3认证加密引擎、GDPR实时审计追踪、AI生成内容数字水印——金融/医疗行业合规上线最后窗口期

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT 2026安全增强套件整体架构与合规定位 ChatGPT 2026安全增强套件&#xff08;CESK-2026&#xff09;是一套面向生成式AI服务的纵深防御框架&#xff0c;专为满足GDPR、中国《生成式人工智能服务…...

如何免费解锁Cursor Pro:完整破解方案与实战指南

如何免费解锁Cursor Pro&#xff1a;完整破解方案与实战指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial re…...

声明式数据转换利器:Refiner 实战指南与架构集成

1. 项目概述与核心价值最近在折腾一个老项目的数据清洗和转换&#xff0c;被一堆格式混乱、结构不一的JSON文件搞得焦头烂额。手动写脚本处理吧&#xff0c;每次需求一变就得重写&#xff0c;维护成本太高&#xff1b;用现成的ETL工具吧&#xff0c;又觉得过于笨重&#xff0c;…...

量化交易工具箱全景:从数据回测到实盘部署的完整指南

1. 系统性交易资源全景图&#xff1a;从入门到精通的工具箱如果你对用代码和数学模型在金融市场里“掘金”感兴趣&#xff0c;那你来对地方了。系统性交易&#xff0c;或者说量化交易&#xff0c;早已不是华尔街大机构的专利。随着开源工具的爆发式增长&#xff0c;任何一个有编…...

CCS6.0新建DSP28069工程后,必做的5项TI官方库配置(解决编译错误与链接问题)

CCS6.0新建DSP28069工程后必做的5项TI官方库配置实战指南 当你用CCS6.0为DSP28069新建一个空工程并点击"Finish"后&#xff0c;真正的挑战才刚刚开始。那些看似简单的编译错误和链接问题背后&#xff0c;隐藏着TI官方库配置的关键逻辑。本文将带你深入理解每个配置步…...

虚假信息注入下异构系统弹性纳什均衡【附代码】

✨ 长期致力于博弈论、分布式纳什均衡、虚假信息注入攻击、线性系统、参数不确定、事件触发研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;虚假信息观…...

保姆级教程:用Forge为你的Minecraft服务器添加热门Mod(附Curseforge选包清单)

从零打造高可玩性Minecraft Mod服务器&#xff1a;Forge环境配置与精品Mod组合指南 当你第一次打开Curseforge网站&#xff0c;面对超过10万个Minecraft Mod时&#xff0c;那种既兴奋又茫然的感觉我深有体会。作为从2013年就开始运营Mod服务器的老玩家&#xff0c;我见证了太多…...