JQuery和Ajax学习

JQuery介绍

学习视频Jquery和ajax

Jquery的下载与安装

下载

http://jquery.com/ 下载

优点

(1)提供了强大的功能函数

(2)解决浏览器兼容性问题

(3)实现丰富的 UI 和插件

(4)纠正错误的脚本知识

安装

在页面引入即可

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

获取JQuery对象

$ 符号在 jQuery 中代表对 jQuery 对象的引用。只有jQuery对象才能调用jQuery提供的方法。

var box = $("#box");

原理

Dom对象转Jquery对象

var domDiv = document.getElementById('mydiv');  // 获取Dom对象
mydiv = $(domDiv); //Dom对象转换成JQuery对象

Jquery选择器

和使用js操作Dom一样,获取文档中的节点对象是很频繁的一个操作,在jQuery中提供了简便的方式供我们查找|定位元素,称为jQuery选择器。

基础选择器

选择器名称举例
id选择器#id$(‘#test’):选择id为test的元素
标签(元素)选择器element$(‘div’):选择所有div元素
类选择器class$(‘.box’):选择class=box的所有元素
通用选择器*$(‘*’):选择所有元素
组合选择器/$(“#test,span,.blue”):同时选中多个选择器匹配的元素
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .blue {
            background: blue;
        }
    </style>
</head>

<body>
    <div id="mydiv1">id选择器1 <span>span中的内容</span></div>
    <div id="mydiv2" class="blue">元素选择器</div>
    <span class="blue">样式选择器</span>
    <script src="../js/JQuery.js"></script>
    <script>
        // id选择器
        console.log("======id======");
        var idSelecter = $('#mydiv1');
        console.log(idSelecter.html());
        console.log(idSelecter.text());
        // 元素选择器
        console.log("======name======");
        var nameSe = $('div'); // 有多个div元素
        nameSe.each(function () {
            // this是dom对象,$(this)是jquery对象
            console.log($(this).text());
        });
        // 类选择器,class
        console.log("======class=====");
        var classSe = $('.blue'); // 有多个class=blue的元素
        classSe.each(function () {
            console.log($(this).text());
        });
        // 通用选择器:*
        console.log("======所有元素======");
        var all = $("*");
        console.log(all)
        // 组合选择器
        console.log("======组合======");
        var unionSe = $('span, .blue,div');
        unionSe.each(function () {
            console.log($(this).text());
        });
    </script>
</body>

</html>

层次选择器

选择器名称举例
后代选择器ancestor descendant$(“#parent div”)选择id为parent的元素的所有div子元素
子代选择器parent > child$(“#parent>div”)选择id为parent的直接div子元素
相邻选择器prev + next$(“.blue + img”)选择css类为blue的下一个img元素
同辈选择器prev ~ sibling$(“.blue ~ img”)选择css类为blue的之后的img元素
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #parent{
            width: 300px;
            height: fit-content;
            border: 5px solid salmon;
            text-align: center;
            margin: 0 auto;
            box-sizing: border-box;
        }
        #parent>div{
            border: 3px solid seagreen;
        }
        #parent>div>div{
            color: blue;
        }
    </style>
</head>

<body>
    <div id="parent">层次择器
        <div id="child" class="testColor">父选择器
            <div class="gray">子选择器</div>
            <img src="http://www.baidu.com/img/bd_logo1.png" width="270" height="129" />
            <img src="http://www.baidu.com/img/bd_logo1.png" width="270" height="129" />
        </div>
        <div>
            选择器2 <div>选择器2中的div</div>
        </div>
    </div>
    <script src="../js/JQuery.js"></script>
    <script>
        console.log("=========后代选择器-选择所有后代=====");
        var ancestorS = $('#parent div');
        console.log(ancestorS)
    
        console.log("=========子代选择器-选择儿子辈=====");
        var child = $('#parent>div');
        console.log(child)

        console.log("=========相邻选择器=====");
        var pre_next = $(".gray + img");
        console.log(pre_next);

        console.log("=========同辈选择器,其后,(弟弟)=====");
        var pre_siblings = $(".gray ~ img");
        console.log(pre_siblings);
    </script>
</body>

</html>

表单选择器

表单选择器通过表单元素的类型来进行选择,具体实现格式如下:

:input--->查找所有的input元素,会匹配所有的input、textarea、select和button元素。
:text---->匹配所有文本框
:password--->匹配所有密码输入框
:radio--->匹配所有单选框
:checkbox--->匹配复选框
:submit--->匹配所有具有submit属性的按钮
……
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表单选择器</title>
</head>

<body>
    <form id="myform">
        <table>
            <tr>
                <td>用户姓名:<input type="text"></td>
            </tr>
            <tr>
                <td>用户密码:<input type="password"></td>
            </tr>
            <tr>
                <td>
                    <input type="radio" name="sex"><input type="radio" name="sex"></td>
            </tr>
            <tr>
                <td>
                    爱好<input type="checkbox">游泳 <input type="checkbox">打篮球 <input type="checkbox">题主求 <input type="checkbox">看书 
                </td>
            </tr>
            <tr>
                <td><input type="submit" value="提交"></td>
            </tr>
        </table>
    </form>
    <script src="../js/JQuery.js"></script>
    <script>
        var inputs = $(':input');
        inputs.each(function () {
            console.log($(this).get(0))
        })

        console.log("------+++++++++++++++++++++--------")
        // 获取 text
        console.log($(":text")); // 1
        // 获取 password
        console.log( $(":password")); // 1
        // 获取radio
        console.log( $(":radio")); // 2
        // 获取checkbox
        console.log($(":checkbox"));
    </script>
</body>

</html>

Jquery Dom操作

jQuery也提供了对HTML节点的操作,而且在原生js的基础之上进行了优化,使用起来更加方便。

操作元素的属性

获取属性

在这里插入图片描述

设置属性

在这里插入图片描述

移除属性

<script>
    $('#myform').css("text-align","center")
    // 设置(添加)属性
    console.log($(":text").attr('id'))
    $(":text").attr('id','uname');
    console.log($(":text").attr('id'))

    // 两种获取属性方法:attr和prop
    var sex = $(':radio');
    sex.each((index,item)=>{
        console.log($(item).attr('value'))
        console.log($(item).prop('value'))
    })
    var hobby = $(":checkbox");
    hobby.each((index,item)=>{
        console.log($(item).attr('checked'))
        console.log($(item).prop('checked'))
    })

    // 删除属性
    console.log($('#swimming').prop('checked'))
    $('#swimming').removeAttr('checked')
    console.log($('#swimming').prop('checked'))
</script>

操作元素的样式

对于元素的样式,也是一种属性,由于样式用得特别多,所以对于样式除了当做属性处理外还可以有专门的方法进行处理。

在这里插入图片描述

增加元素的具体样式,格式:

//多个样式设置
1)css({‘样式名’:’样式值’,’样式名2:’样式值2})

例:css({"background-color":"red","color":"#fff"});
//单个样式设置
2)css(“样式名”,”样式值”)

例:css('color','white')
//设置内容居中
$('#myform').css("text-align","center")

操作元素的内容

对于元素还可以操作其中的内容,例如文本,值,甚至是html。

在这里插入图片描述

<body>
    <div id="box">
        <span>点击连接:</span><a href="../js/object.json">json文件</a>
        <button value="按钮" type="submit">button</button>
    </div>
    <script src="../js/JQuery.js"></script>
    <script>
        // 获取元素
        var $box = $("#box");
        var span = $box.children('span');
        var a = $box.children('a')
        var btn = $box.children('button')
        // 打印html内容和text内容
        console.log($box.html())
        console.log($box.text())
        // 打印val内容
        console.log(btn.val())
        
        // 设置html内容
        $box.html('<h1>点击</h1>')

        // 设置text内容
        $box.text('点击跳转')
        $box.text('<h1>点击</h1>')

        // 设置val内容
        btn.val('提交')
        console.log(btn.val())
    </script>
</body>

创建和添加元素

创建元素

在jQuery中创建元素很简单,直接使用$()函数即可。

$(‘元素内容’);
$('<p>这是一个段落</p>');
添加元素
方法说明
prepend(content)在被选元素内部的开头插入元素或内容。被追加的 content 参数,可以是字符、HTML 元素标记。
$(content).prependTo(selector)把 content 元素或内容加入 selector 元素开头
append(content)在被选元素内部的结尾插入元素或内容,被追加的 content 参数,可以是字符、HTML 元素标记。
$(content).appendTo(selector)把 content元素或内容插入selector 元素内,默认是在尾部
before()在元素前插入指定的元素或内容:$(selector).before(content)
after()在元素后插入指定的元素或内容:$(selector).after(content)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>创建和添加元素</title>
    <style>
        #box{
            background-color: seagreen;
            width: 200px;
            height: 200px;
        }
    </style>
</head>
<body>
    <div id="box">这是一个diva</div>
    <script src="../js/JQuery.js"></script>
    <script>
        var $body = $('body')
        var $box = $('#box')
        // 生成的元素只能被一个结点添加,不能重复添加
        var p = $('<p>这是一个段落</p>')
        var h1 = $('<h1>H1</h1>')
        // append方法:在body元素内部尾部加入一个h1元素
        $body.append(h1)
        // prepend方法:在box元素内部开头加入一个p元素
        $box.prepend(p)
        // $().prependTo(''):在body内部开头加入一个div元素
        $('<div style="background-color:red"> $().prependTo("body")</div>').prependTo('body')


        // before()方法,新增元素位置在指定元素的前面,而非内部
        var a = $('')
        $box.before('<a href="../js/object.json">这是一个a标签</a>')
        // after()方法
        $box.after('<h2>h2</h2>')
    </script>
</body>
</html>

删除和遍历元素

删除元素

在这里插入图片描述

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>删除元素</title>
    <style>
        span {
            color: white;
            padding: 8px;
            margin: 5px;
            float: left;
        }

        .green {
            background-color: green;
        }

        .blue {
            background-color: blue;
        }
    </style>
</head>

<body>
    <h3>删除元素</h3>
    <span class="green">jquery<a>删除</a></span>
    <span class="blue">java</span>
    <span class="green">ajax</span>
    <span class="blue">servlet</span>

    <script src="../js/JQuery.js"></script>
    <script>
        // 删除所有元素
        // $("span").remove();
        // 删除样式为blue的span
        // $("span.blue").remove();
        // 清空元素内容
        // $("span").empty();
        // 清空样式为green的元素内容
        // $(".green").empty();
    </script>
</body>

</html>
遍历元素

each()

$(selector).each(function(index,element)) :遍历元素

参数 function 为遍历时的回调函数,index 为遍历元素的序列号,从 0 开始。

element是当前的元素,此时是dom元素。

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>
        遍历元素
    </title>
    <style>
        span {
            color: white;
            padding: 8px;
            margin: 5px;
            float: left;
        }

        .green {
            background-color: green;
        }

        .blue {
            background-color: blue;
        }
    </style>
</head>

<body>
    <h3>each():遍历元素</h3>
    <span class="green">jquery<a>删除</a></span>
    <span class="blue">java</span>
    <span class="green">ajax</span>
    <span class="blue">servlet</span>


    <script src="../js/JQuery.js"></script>
    <script>
        $('span').each(function (index, e) {
            console.log(index + " ---> " + $(e).text());
        })
    </script>
</body>

</html>

JQuery事件

bind()绑定事件

为被选元素添加一个或多个事件处理程序,并规定事件发生时运行的函数。

$(selector).bind( eventType [, eventData], handler(eventObject));

eventType :是一个字符串类型的事件类型,就是你所需要绑定的事件。

这类类型可以包括如下:

blur, focus, focusin, focusout, load, resize, scroll, unload, click, dblclick

mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter

mouseleave,change, select, submit, keydown, keypress, keyup, error

[, eventData]:传递的参数,格式:{名:值,名2:值2}

handler(eventObject):该事件触发执行的函数

简单的bind()事件
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <button>点击</button>

    <script src="../js/JQuery.js"></script>
    <script>
        // $('button').bind('click',function(){
        //     console.log($(this).text())
        //     alert('触发了点击事件')
        // })
        $('button').click(function () {
            console.log($(this).text())
            alert("被点击了!")
        })

    </script>
</body>

</html>

ready加载事件

ready()类似于 onLoad()事件

ready()可以写多个,按顺序执行

$(document).ready(function(){})等价于$(function(){})

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>ready事件</title>
    <style>
        p{
            border: 3px solid slateblue;
            width: fit-content;
        }
    </style>
</head>

<body>

    <h1></h1>
    <input id="btntest" type="button" value="砍一刀" />
    <p>aaa</p>
    <p>bbbb</p>
    <p>ccc</p>
    <p>dddd</p>
</body>
<script src="../js/JQuery.js"></script>
<script>
    // 文档载入完便触发ready方法
    $(document).ready(function () {
        $("h1").text("ready go...");
    })
    // $(document).ready(function(){}) == $(function(){}) 
    $(function () {
        $("p").click(function () {
            // 隐藏
            $(this).hide();
        });
    });
    $(function () {
        $("#btntest").bind("click", function () {
            $("h1").text("马上就成功了,再砍一刀");
        });
    });
</script>

</html>

json格式文件

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

结构

对象和数组

注意点:

  • 对象的每个属性都要有双引号,否则json数据不能正常加载
{"name":"lily","age":18}
  • 多对象范例(数组+对象)
    • 数组中可以嵌套数组也可以嵌套对象
{
    "users":[
        {
            "uname":"Mary",
            "age":18,
            "gender":"女"
        },
        {
            "uname":"Lily",
            "age":20,
            "gender":"女"
        },
        {
            "uname":"Mike",
            "age":22,
            "gender":"男"
        },
        {
            "uname":"Joy",
            "age":22,
            "gender":"男"
        }
    ]
}

JQuery Ajax

$.ajax

jquery调用ajax方法:

格式:$.ajax({});

参数:

type:请求方式GET/POST

url:请求地址url

async:是否异步,默认是true表示异步

data:发送到服务器的数据(是一个json对象)

dataType:预期服务器返回的数据类型

contentType:设置请求头

success:请求成功时调用此函数

error:请求失败时调用此函数

get请求

$.ajax({
 type:"get",
 url:"js/cuisine_area.json",
 async:true,
 success : function (msg) {
 	var str = msg;
	 console.log(str);
	 $('div').append("<ul></ul>");
 	for(var i=0; i<msg.prices.length;i++){
		$('ul').append("<li></li>");
 		$('li').eq(i).text(msg.prices[i]);
 	}
 },
 error : function (errMsg) {
 	console.log(errMsg);
 	$('div').html(errMsg.responseText);
 }
});

$.get

这是一个简单的 GET 请求功能以取代复杂 $.ajax 。

请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

// 1.请求json文件,忽略返回值
$.get('js/cuisine_area.json');
// 2.请求json文件,传递参数,忽略返回值
$.get('js/cuisine_area.json',{name:"tom",age:100});
// 3.请求json文件,拿到返回值,请求成功后可拿到返回值
$.get('js/cuisine_area.json',function(data){
 console.log(data);
});
// 4.请求json文件,传递参数,拿到返回值 
$.get('js/cuisine_area.json',{name:"tom",age:100},function(data){
 console.log(data);
});

$.post

. p o s t 方法和 .post方法和 .post方法和.get方法相同

$.getJSON

表示请求返回的数据类型是JSON格式的ajax请求。

$.getJSON('js/cuisine_area.json',{name:"tom",age:100},function(data){
 console.log(data); // 要求返回的数据格式是JSON格式
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值