JQuery对象
jQuery是一套兼容多浏览器的JavaScript脚本库。核心理念是写的少得更少,做的更多,使用jQuery将极大的提高编写JavaScript代码的效率。
优点
- 提供了强大的功能函数
- 解决浏览器兼容性问题
- 实现丰富的UI和插件
- 矫正错误的脚本知识
jQuery核心
$符号在jQuery中代表对象的引用,jQuery是核心对象。通过该对象可以获取jQuery对象,调用jQuery提供的方法。只有jQuery对象才能调用jQuery提供的方法。
获取jQuery包装集对象
$ (“选择器”)
如果元素不存在,不会反回null,会返回空的jQuery对象,根据length0来判断是否获取成功。
获取JSDOM对象
document.getElement…
如果元素不存在,返回null,根据null判断是否获取到DOM对象。
JSDOM对象转换为JQuery对象
利用$()方法进行包装
$(js对象)
jQuery对象转换为JSDOM对象
只需要获取到数组中的元素即可
jquery对象[索引]
jQuery对象 . get()
注意:
- JSDOM对象与jQuery对象不能互相调用其方法
- jQuery的函数只能jQuery对象能够调用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--引入jq-->
<script src="js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="box">box</div>
<script>
//DOM
var js_obj = document.getElementById("box");
console.log(js_obj);
//jq
var jq_obj = $("#box");
console.log(jq_obj.length);
//js-->jq
console.log($(js_obj));
//jq-->js
console.log(jq_obj[0]);
console.log(jq_obj.get(0));
/* this代表了dom对象,不是jquery对象 */
console.log("-------------dom转jquery------------------")
$('#mydiv').each(function() {
// 通过id选择器选择了id为mydiv的所有元素然后进⾏遍历
// 那么遍历出的每个元素就是id为mydiv的标签元素
// ⽽this就代表了当前的这个元素
var jquery = $(this); });
console.log("-------------jquery转dom------------------")
$('#mydiv').each(function() {
var dom3 = this;
});
</script>
</body>
</html>
选择器
分类:
- 基础选择器
id选择器 #id $("#testDiv")选择id为testDiv的元素
元素名称选择器 element $(“div”)选择所有div元素
类选择器 . class $(".blue")选择所有class=blue的元素
选择所有元素 * $(" * ") 选择页面所有元素 - 层次选择器
后代选择器 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元素 - 表单选择器
表单选择器:input查找所有的input元素:$ (":input");注意:会匹配所有的input、textarea、select和button元素。
⽂本框选择器:text查找所有⽂本框:$ (":text")
密码框选择器:password查找所有密码框:$ (":password")
单选按钮选择器:radio查找所有单选按钮:$ (":radio")
复选框选择器:checkbox查找所有复选框:$ (":checkbox")
提交按钮选择器:submit查找所有提交按钮:$ (":submit")
图像域选择器:image查找所有图像域:$ (":image")
重置按钮选择器:reset查找所有重置按钮:$ (":reset")
按钮选择器:button查找所有按钮:$ (":button")
⽂件域选择器:file查找所有⽂件域:$ (":file")
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--引入jq-->
<script src="js/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="box">
<div class="item1">
我是div1
<p class="red">div1的p1</p>
<p>div1的p2</p>
</div>
<div>
我是div2
<p class="red">div2的p1</p>
<p>div1的p2</p>
</div>
<div>
我是div3
<p class="red">div3的p1</p>
<p>div3的p2</p>
</div>
</div>
<script>
/*基础选择器*/
/*id选择器*/
console.log($("#box"));
//元素名称选择器
console.log($("div"));
/*类选择器*/
console.log($(".red"));
/*通配符选择器*/
console.log($("*"));
//组合选择器
console.log($("#box,.red"));
//层次选择器
//后代选择器 : 所有满足条件的子元素
console.log($("body div"));
//⼦代选择器 : 满足条件的直接子元素
console.log($("body>div"));
//相邻选择器
console.log($(".item1+div"));
//同辈选择器
console.log($(".item1~div"));
</script>
</body>
</html>
- 过滤选择器
:odd 匹配下标奇数元素
:even 匹配下标为偶数元素
:eq(index) 匹配下标为index
:gt(index) 匹配下标>index
:checked 匹配被选中的 - 属性选择器
[属性名]包含这个属性的被选中
[属性名=“属性值”] 包含指定属性=指定值的元素被选中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--引入jq-->
<script src="js/jquery-3.6.0.min.js"></script>
<style>
/*html中主要存在abc属性的元素就被选中*/
/*[abc]{
background: red;
}*/
/*input标签中主要存在abc属性的元素就被选中*/
input[abc]{
background: red;
}
</style>
</head>
<body>
<form id='myform' name="myform" method="post">
<input type="hidden" name="uno" value="9999" disabled="disabled" />
姓名:<input type="text" id="uname" name="uname" abc="123"/><br />
密码:<input type="password" id="upwd" name="upwd" value="123456" abc="567"/><br />
年龄:<input type="radio" name="uage" value="0" checked="checked"/>⼩屁孩
<input type="radio" name="uage" value="1"/>你懂得 <br />
爱好:<input type="checkbox" name="ufav" value="篮球"/>篮球
<input type="checkbox" name="ufav" value="爬床"/>爬床
<input type="checkbox" name="ufav" value="代码" checked="checked"/>代码<br />
来⾃:<select id="ufrom" name="ufrom" abc="123">
<option value="-1" selected="selected">请选择</option>
<option value="0">北京</option>
<option value="1">上海</option>
</select ><br />
简介:<textarea rows="10" cols="30" name="uintro"></textarea><br />
头像:<input type="file" /><br />
<input type="image" src="http://www.baidu.com/img/bd_logo1.png"
width="20" height="20"/>
<button type="submit" onclick="return checkForm();">提交</button>
<button type="reset" >重置</button>
</form>
<script>
/*表单选择器*/
console.log($(":input"));
//单选框
console.log($(":radio"));
//属性选择器
console.log($("[abc]"));
console.log($("input[abc]"));
console.log($("input[abc=123]"));
//过滤选择器
console.log($("input"));
console.log($("input:eq(3)"));
console.log($("input:gt(3)"));
console.log($("input:checked"));
</script>
</body>
</html>
操作属性
分类:
- 固有属性:标签提供的属性
固有属性:src,href…
共有属性:id,class,name… - 自定义属性:abc aad
- boolean属性:checked selected disabled
区别: attr 与 prop
- attr可以操作固有属性,自定义属性
prop只能操作固有属性 - attr 操作布尔属性(checked),得到的属性值为属性设置的值 checked = ‘checked’
prop 操作布尔属性(checked),得到的结果为true|false
获取属性值:
attr(属性名称) 获取指定的属性值,操作CheckBox时,选中返回checked,没有选中返回 undefined。attr(‘checked’)attr(‘name’)
prop(属性名称) 获取具有true和false两个属性的属性值prop(‘checked’)
设置属性值:
attr(属性名称,属性值) 设置指定的属性值,操作checkbox时,选中返回checked,没有选中返回undefined。
attr(‘checked’,‘checked’)
attr(‘name’,‘zs’)
prop(属性名称,属性值) 设置具有true和false的属性值prop(‘checked’,‘true’)
移出属性
removeAttr(属性名) 移除指定的属性 removeAttr(‘checked’)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--引入jq-->
<script src="js/jquery-3.6.0.min.js"></script>
</head>
<body>
<form action="" id="myform">
<input type="checkbox" name="ch" value="aaaa" haha="hahahahha"/> aa
<input type="checkbox" name="ch" value="bbbb" haha="hehehehhe" checked="checked"/> bb
</form>
<script>
//获取属性值
//操作布尔属性
console.log($("input[type='checkbox']:even").attr("checked")); //checked
console.log($("input[type='checkbox']:odd").attr("checked")); //undefined
console.log($("input[type='checkbox']:even").prop("checked")); //true
console.log($("input[type='checkbox']:odd").prop("checked")); //false
//固有属性
console.log($("input[type='checkbox']:even").attr("value")); //aaaa
console.log($("input[type='checkbox']:odd").attr("value")); //bbbb
console.log($("input[type='checkbox']:even").prop("value")); //aaaa
console.log($("input[type='checkbox']:odd").prop("value")); //bbbb
//自定义属性
console.log($("input[type='checkbox']:even").attr("haha")); //hahahaha
console.log($("input[type='checkbox']:odd").attr("haha")); //hahahaha
console.log($("input[type='checkbox']:even").prop("haha")); //undefined
console.log($("input[type='checkbox']:odd").prop("haha")); //undefined
//设置属性
//设置默认选中
//$("input[type='checkbox']:even").attr("checked","checked");
//$("input[type='checkbox']:odd").prop("checked",true);
//取消被选中状态
//$("input[type='checkbox']:odd").prop("checked",false);
//$("input[type='checkbox']:odd").prop("checked",null);
$("input[type='checkbox']:odd").removeAttr("checked");
$("input[type='checkbox']:odd").removeAttr("haha");
$("input[type='checkbox']:odd").removeAttr("name");
</script>
</body>
</html>
操作样式
attr(“class”) 获取class属性的值,即样式名称
attr(“class”,“样式名”) 修改class属性的值,修改样式
addClass(“样式名”) 添加样式名称
css() 添加具体的样式
removeClass(class) 移除样式名称
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>操作元素样式</title>
<!--引入jq-->
<script src="js/jquery-3.6.0.min.js"></script>
<style type="text/css">
div{
padding: 8px;
width: 180px;
}
.blue{
background: skyblue;
}
.larger{
font-size: 30px;
}
.green {
background : green;
}
.weight{
font-weight: bolder;
}
</style>
</head>
<body>
<h3>css()⽅法设置元素样式</h3>
<div id="conBlue" class="blue larger">天蓝⾊</div>
<div id="conRed">⼤红⾊</div>
<div id="remove" class="blue larger">天蓝⾊</div>
<script>
console.log($("#conBlue").attr("class"));
//addClass
$("#conBlue").addClass("weight");
//添加指定属性,如果原标签中已经存在,覆盖原有的值列表
//$("#conBlue").attr("class","weight");
$("#conBlue").removeClass("larger");
$("#conBlue").css("font-style","italic");
</script>
</body>
</html>
操作元素内容
html() 获取元素的html内容
text() 获取元素的⽂本内容,不包含html
html(“html, 内容”) 设定元素的html内容
text(“text 内容”) 设置元素的⽂本内容,不包含html
val() 获取元素value值
val(“值”) 设定元素的value值
html 与 text之间的区别:
html可以识别纯文本,以及html标签结构
text只能识别存储本
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery-3.6.0.min.js"></script>
</head>
<body>
<h3 id="title"><span>html()和text()⽅法设置元素内容</span></h3>
<div id="html"></div>
<div id="text"></div>
<input type="text" name="uname" value="oop" />
<script>
//操作纯文本
$("#html").html("你好html");
$("#text").text("你好text");
//带有html标签结构
$("#html").html("<h3 style='background: salmon'>你好html</h3>");
$("#text").text("<h3 style='background: salmon'>你好text</h3>");
console.log( $("#title").html());
console.log( $("#title").text());
$("[type='text']").val("哈哈哈");
console.log( $("[type='text']").val());
</script>
</body>
</html>
创建于添加
创建元素
$(‘创建内容’)
添加元素
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)
删除元素
remove() 删除所选元素或指定的⼦元素,包括整个标签和内容⼀起删。
empty() 清空所选元素的内容
遍历元素
$(selector).each(function(index,element)) :遍历元素
参数 function 为遍历时的回调函数,
index 为遍历元素的序列号,从 0 开始。
element是当前的元素,此时是dom元素。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery-3.6.0.min.js"></script>
<style>
#box{
border : 3px saddlebrown dashed;
}
</style>
</head>
<body>
<div id="box">
<div class="item1">内容1</div>
<div class="item2">内容2</div>
</div>
<script>
//创建元素
var ele = $('<p id="p1"><span>你好span</span>你好p1</p>');
//添加元素
//$("#box").prepend(ele);
$("#box").prepend("<p>p2</p>");
ele.prependTo($("#box"));
$("#box").before("<div>box前面</div>");
//删除元素
//$("#box").empty();
//$("#box").remove();
//遍历所有div
$("div").each(function (index,element) {
console.log(index+'---->'+element);
console.log($(element));
});
</script>
</body>
</html>
事件绑定
1.ready 加载事件-> window.onload
$(function(){})
$(document).ready(function(){})
window.onload : 待DOM结构,与资源全部加载完成之后触发
ready : 待DOM结构载完成之后触发
2.bind 绑定事件
bind(“事件名称”,function(){
触发函数
})
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery-3.6.0.min.js"></script>
<script>
/*js*/
window.onload = function(){
document.getElementById("btn").style.background = "red";
}
/*jq*/
//1)
jQuery(function(){
$("#btn").css("background","green");
//bind
/*$("#btn").bind("click",function(){
alert("hahaha");
})*/
//链式绑定
$("#btn").bind("click",function(){
alert("hahaha");
}).bind("mouseover",function(){
console.log("移入");
});
$("#btn").bind({
"click":function(){
console.log("点击事件");
},
"mousemove":function(){
console.log("移动了");
}
})
})
</script>
</head>
<body>
<button id="btn" type="button">按钮</button>
<img src="images/pexels-photo-5957341.jpeg" alt="">
</body>
</html>
ajax 异步请求
$.ajax({ -> 配置请求的参数设置
type : 请求方式 “GET|POST”,
url : “请求服务器的位置”,
data : 请求数据,
dataType : 预期的服务器响应数据的类型 json,text,html,
success : function(data){
请求成功后的回调函数
参数data: 服务器响应的数据
},
error : function(){
请求失败后的回调函数
}
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/jquery-3.6.0.min.js"></script>
</head>
<body>
<button id="btn" type="button">按钮</button>
<form action="">
<input type="text" name="uname" value="zhangsan"> 用户名
<input type="password" name="upwd" value="1234"> 用户密码
</form>
<script>
$("#btn").bind("click",function(){
console.log($("form").serialize());
$.ajax({
type : "GET",
url : "js/data.json",
/*data : {
"name" : "zhangsan",
age : 18
},*/
data :$("form").serialize() , /*表单提交*/
dataType : "JSON",
success : function (data) {
console.log(data);
console.log(data.code);
console.log(data.message);
console.log(data.result);
},
error : function () {
console.log("请求失败!!!!");
}
});
/*
//GET : 请求json⽂件,传递参数,拿到返回值
$.get('js/data.json',{name:"tom",age:100},function(data){
console.log(data);
});
//POST : 请求json⽂件,传递参数,拿到返回值
$.post('js/data.json',{name:"tom",age:100},function(data){
console.log(data);
});*/
//响应结果固定为json
/*$.getJSON('js/data.json',{name:"tom",age:100},function(data){
console.log(data); // 要求返回的数据格式是JSON格式
})*/
});
</script>
</body>
</html>