前端——Ajax和jQuery

news2024/11/18 23:51:25

一、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(){});  

 

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

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

相关文章

AutoGen实现多代理-Planning_and_Stock_Report_Generation(六)

1. 案例背景 本节内容是构建Agent组&#xff0c;通过广播模式&#xff0c;实现管理者对agent工作流的管理。本实验链接&#xff1a;传送门 2. 代码实践 2.1 环境设置 llm_config{"model": "gpt-4-turbo"}# 工作任务描述 task "Write a blogpost a…

【CSS3】css开篇基础(1)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

【树莓派系列】树莓派首次开机配置

树莓派首次开机配置 文章目录 树莓派首次开机配置1.镜像烧录2.开启串口调试1.无屏幕2.有屏幕3.串口登录系统 3.配置网络VNC与SSH的区别 4.更新vim5.固定IP地址6.开启SSH&#xff0c;网络登录开发板7.xrdp图形化登录开发板XRDP与VNC区别8.更新国内下载镜像源9.vscode连接开发板1…

C语言 | Leetcode C语言题解之第450题删除二叉搜索树中的节点

题目&#xff1a; 题解&#xff1a; struct TreeNode* deleteNode(struct TreeNode* root, int key){struct TreeNode *cur root, *curParent NULL;while (cur && cur->val ! key) {curParent cur;if (cur->val > key) {cur cur->left;} else {cur c…

OpenAi FunctionCalling 案例详解

源码详细讲解 pdf 及教学视频下载链接&#xff1a;点击这里下载 FunctionCalling的单一函数调用 天气预报查询&#xff08;今天长沙的天气如何&#xff1f;&#xff09; import json import requests from openai import OpenAIclient OpenAI()location "长沙"…

`git restore` 和 `git checkout` 用于丢弃工作区的改动, `git switch` 和 `git checkout` 用来切换分支

git restore 和 git checkout 都可以用于丢弃工作区的改动 但它们有一些区别&#xff0c;尤其是在 Git 2.23 引入了新的命令后。 主要区别 git checkout 是一个多用途命令&#xff1a; 它用于切换分支。它还可以用于恢复工作区中特定文件的更改。由于功能过于复杂&#xff0c…

Cortex微控制器软件接口标准(CMSIS)

Cortex微控制器软件接口标准 目前&#xff0c;软件开发已经是嵌入式系统行业公认的主要开发成本&#xff0c;通过将所有Cortex-M芯片供应商产品的软件接口标准化&#xff0c;能有效降低这一成本&#xff0c;尤其是进行新产品开发或者将现有项目或软件移植到基于不同厂商MCU的产…

Golang | Leetcode Golang题解之第450题删除二叉搜索树的节点

题目&#xff1a; 题解&#xff1a; func deleteNode(root *TreeNode, key int) *TreeNode {var cur, curParent *TreeNode root, nilfor cur ! nil && cur.Val ! key {curParent curif cur.Val > key {cur cur.Left} else {cur cur.Right}}if cur nil {retur…

回首往事,感受change

今早&#xff0c;我收到了CSDN发来的消息&#xff0c;当我看了内容才发现&#xff0c;我不知不觉已经在CSDN里面创作了730天&#xff08;2年&#xff09;也是个非常值得纪念的日子。 今天&#xff0c;我来回顾一下我的以往&#xff0c;感受一下我的成长与变化。 梦的开始 大家…

【Python报错已解决】 Failed building wheel for opencv-python-headless

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

2024多模态大模型发展调研

随着生成式大语言模型应用的日益广泛&#xff0c;其输入输出模态受限的问题日益凸显&#xff0c;成为制约技术进一步发展的瓶颈。为突破这一局限&#xff0c;本文聚焦于研究多模态信息的协同交互策略&#xff0c;旨在探索一种能够统一理解与生成的多模态模型构建方法。在此基础…

C# 无边框窗体,加阴影效果、多组件拖动、改变大小等功能完美实现优化版效果体验

一、预览效果 国庆节第一天,祝祖国繁荣昌盛! 1.1 效果图 (WinForm无边框窗体,F11可全屏) 拖动窗体时半透明效果(拖动时参考窗体后面释放位置) 说明:本功能的实现基于网友的原型完善而来,更多代码可以参考他的文章 h

智能平衡移动机器人-平台硬件电路

目录 硬件电路主要模块包括&#xff1a; 主控制器 TMS320F28069数字信号处理器 电池 电机驱动电路 直流电机的驱动 编码器 传感器与外设模块 APP 为了使智能平衡移动机器人达到更好的平衡控制效果&#xff0c;机器人的本体设计更为轻便、集中。机器人的硬件电路也进行集…

课设实验-数据结构-单链表-文教文化用品品牌

题目&#xff1a; 代码&#xff1a; 正解&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #define MaxSize 10 //定义顺序表最大长度static int result; //字符串比较结果 static int i; //循环初始值 static bool flag; //记录结…

Typora使用与Markdown语法详细教程

Typora 基本介绍 Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器。Markdown 是一种 轻量级标记语言&#xff0c;它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者 HTML&#xff09;文档。 安装 下载地址&#xff…

C语言 getchar 函数完全解析:掌握字符输入的关键

前言 在C语言中&#xff0c;getchar 是一个非常实用的函数&#xff0c;用于从标准输入流&#xff08;通常是键盘&#xff09;读取单个字符。这对于处理文本输入非常有用&#xff0c;尤其是在需要逐个字符处理的情况下。本文将深入探讨 getchar 函数的用法和特点&#xff0c;并…

开放式耳机是什么意思?哪个品牌好?开放式蓝牙耳机测评分享

开放式耳机是目前比较流行的一种蓝牙耳机类型&#xff0c;它凭借佩戴舒适、安全性高、透气性好以及健康卫生等等特点成为了很多人的耳机选择。但其实并没有太多人了解开放式耳机&#xff0c;不知道什么是开放式耳机、开放式耳机是否比封闭式耳机强、什么样的人适合开放式耳机以…

Optiver股票大赛Top2开源!

Optiver股票大赛Top2开源&#xff01; ↑↑↑关注后"星标"kaggle竞赛宝典 作者&#xff1a;杰少 Optiver第二名方案解读 简介 Optiver竞赛已经于今天结束了&#xff0c;竞赛也出现了极端情况&#xff0c;中间断崖式的情况&#xff0c;在Kaggle过往的竞赛中&#…

【电路基础 · 1】电路模型和电路定律(自用)

总览 1.电路和电路模型 2.电流和电压参考方向 3.电功率和能量 4.电路元件 5.电阻元件 6.电压源和电流源 7.受控电源 8.基尔霍夫定律 重点&#xff1a; 1.电压、电流的参考方向 2.电阻元件、电源元件的特性 3.基尔霍夫定律&#xff08;基尔霍夫电流定律KCL、基尔霍夫电压定律K…

【办公类-48-03】20240930每月电子屏台账汇总成docx-3(三园区合并EXCLE,批量生成3份word)

背景需求&#xff1a; 前期电子屏汇总是“总园”用“”问卷星”、“一分园”用“腾讯文档”&#xff0c;二分园“用“手写word”” 【办公类-48-02】20240407每月电子屏台账汇总成docx-2&#xff08;腾讯文档xlsx导入docx&#xff0c;每页20条&#xff09;【办公类-48-02】20…