1、jQuery 的使用
1.1、使用步骤
-
引入 jQuery 文件
-
获取 jQuery 对象 ----> $(选择器)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box"></div>
<script>
console.log($("#box"));
</script>
</body>
</html>
1.2、jQuery 对象与 js 对象的转换
1.2.1、js 对象转为 jQuery 对象
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box"></div>
<script>
console.log($(document.querySelector("#box")));
</script>
</body>
</html>
1.2.2、jQuery 对象转为 js 对象
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box"></div>
<script>
console.log($("#box")[0]); // 推荐
console.log($("#box").get(0)); // 了解
</script>
</body>
</html>
2、jQuery 选择器
2.1、基础选择器
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box">box</div>
<div class="haha">div_haha</div>
<script>
console.log($("#box"));
console.log($(".haha"));
console.log($("div"));
console.log($("*"));
</script>
</body>
</html>
2.2、群组 | 组合选择器
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box">box</div>
<div class="haha">div_haha</div>
<script>
console.log($("#box, .haha"));
</script>
</body>
</html>
2.3、层次选择器
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box">box
<ul>
<li>li1</li>
<li>li2
<ul>
<li>内部li1</li>
<li>内部li2</li>
</ul>
</li>
<li>li3</li>
</ul>
</div>
<div class="haha">div_haha</div>
<div class="haha">div</div>
<p class="haha">p_haha</p>
<script>
console.log($("#box ul"));
console.log($("#box > ul"));
console.log($("#box + div"));
console.log($("#box ~ div"));
</script>
</body>
</html>
2.4、属性选择器
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</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" /><br />
密码:<input type="password" id="upwd" name="upwd" value="123456" /><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 />代码<br />
来自:
<select id="ufrom" name="ufrom">
<option value="-1" selected="selected">请选择</option>
<option value="0">北京</option>
<option value="1" selected>上海</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($("[type]")); // 具有这个属性的元素
console.log($("[type = radio]")); // 具有这个属性,并且等于指定属性值
</script>
</body>
</html>
2.5、表单选择器
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<form id="myform" name="myform" method="post">
……………………
</form>
<script>
console.log($(":input"));
console.log($(":radio"));
console.log($(":checkbox"));
console.log($(":password"));
</script>
</body>
</html>
2.6、过滤选择器(配合其他选择器一起使用)
-
:checked 被选中的
-
:selected 被选中的 option
-
:eq(index) 获取指定索引位置的元素
-
:gt(index) 获取大于指定索引的元素
-
:lt(index) 获取小于指定索引的元素
-
:even 偶数索引
-
:odd 奇数索引
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<form id="myform" name="myform" method="post">
……………………
</form>
<script>
console.log($(":checkbox:checked"));
console.log($(":selected"));
console.log($(":input:eq(1)"));
console.log($(":input:gt(3)"));
console.log($(":input:lt(3)"));
console.log($(":input:even"));
console.log($(":input:odd"));
</script>
</body>
</html>
注意:
-
JS DOM 中获取 DOM 对象如果没有获取到,返回 null
-
jQuery 获取 jQuery 对象,如果没有获取到,返回一个空 jQuery 对象
3、jQuery 操作
3.1、操作属性
3.1.1、属性
分类:
-
固有属性:src,href,id,class...
-
自定义属性:程序猿为元素添加的自定义属性
-
boolean属性:checked,selected,disabled
3.1.2、获取属性值
-
$().attr("属性名"):可以获取固有属性的值,可以获取自定义属性,boolean 属性结果为对应的值
-
$().prop("属性名"):可以获取固有属性的值,不可以获取自定义属性,boolean 属性结果为 true | false
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box1" abc="123">div1</div>
<input type="radio" name="gender" id="man" checked />
<script>
// 固有属性
console.log($("#box1").attr("id")); // box1
console.log($("#box1").prop("id")); // box1
// 自定义属性
console.log($("#box1").attr("abc")); // 123
console.log($("#box1").prop("abc")); // undefined
// boolean 属性
console.log($("#man").attr("checked")); // checked
console.log($("#man").prop("checked")); // true
</script>
</body>
</html>
3.1.3、设置属性值
-
$().attr("属性名", "属性值"):可以操作固有属性,自定义属性,boolean 属性对应属性值为确定的值
-
$().prop("属性名", "属性值"):只能操作固有属性,boolean 属性值为 true | false
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
<style>
.red {
background: red;
}
</style>
</head>
<body>
<div id="box1" abc="123">div1</div>
<div id="box2" abc="123">div2</div>
<input type="radio" name="gender" id="man" checked />
<input type="radio" name="gender" id="woman" />
<script>
// 固有属性
console.log($("#box1").attr("class", "red"));
console.log($("#box2").prop("class", "red"));
// 自定义属性
console.log($("#box1").attr("haha", "hh"));
console.log($("#box2").prop("haha", "hh")); // 不能设置
// boolean 属性
console.log($("#man").attr("checked", "checked")); // checked | null
// console.log($("#man").prop("checked", true));
</script>
</body>
</html>
3.1.4、删除属性
-
$().removeAttr("属性名")
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
<style>
.red {
background: red;
}
</style>
</head>
<body>
<div id="box1" abc="123">div1</div>
<div id="box2" abc="123">div2</div>
<input type="radio" name="gender" id="man" checked />
<input type="radio" name="gender" id="woman" />
<script>
$("#box1").removeAttr("abc");
</script>
</body>
</html>
3.1.5、attr 和 prop 之间的区别
-
attr 可以操作所有属性
-
prop 只能操作固有属性
-
attr 操作 boolean 属性,value 为定值,prop 操作 boolean,value 为 true | false
-
boolean 属性建议使用 prop,其他属性建议使用 attr
3.2、操作元素的样式
3.2.1、获取样式名称
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box2" class="haha hehe">div2</div>
<script>
console.log($("#box2").attr("class")); // haha hehe
</script>
</body>
</html>
3.2.2、修改样式(属性值的覆盖)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
<style>
.red {
background: red;
}
</style>
</head>
<body>
<div id="box2" class="haha hehe">div2</div>
<script>
$("#box2").attr("class", "red");
</script>
</body>
</html>
3.2.3、添加样式名称(属性值的追加)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
<style>
.size {
font-size: 30px;
}
</style>
</head>
<body>
<div id="box1">div1</div>
<script>
$("#box1").addClass("size");
</script>
</body>
</html>
3.2.4、添加具体的样式
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box1">div1</div>
<div id="box2">div2</div>
<script>
$("#box1").css("width", "500px");
$("#box2").css({"width" : "500px", "height" : "200px"});
</script>
</body>
</html>
3.2.5、移除样式名称
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box2" class="haha hehe">div2</div>
<script>
$("#box2").removeClass("haha");
</script>
</body>
</html>
3.3、操作元素的值
3.3.1、非表单元素标签对的值
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<div id="box1">div1
<p>我是div1中的p标签</p>
</div>
<div id="box2">div2
<p>我是div2中的p标签</p>
</div>
<script>
console.log($("#box1").html());
console.log($("#box2").text());
console.log($("#box1").html("<span style='color: cyan'>我是div1中的span</span>"));
console.log($("#box2").text("<span style='color: cyan'>我是div2中的span</span>"));
</script>
</body>
</html>
3.3.2、表单元素的值
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<input type="text" name="words" value="张三">
<script>
console.log($("[type = text]").val());
console.log($("[type = text]").val("李四"));
</script>
</body>
</html>
3.4、创建元素
-
$("元素内容");
$('<p>this is a paragraph!!!</p>');
3.5、添加元素
-
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>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<ul id="box">
<li>ul的li1</li>
<li class="li">ul的li2</li>
</ul>
<script>
var li = $('<li style="color:greenyellow;"></li>');
// 使用 prepend 前加内容
$("#box").prepend("<li>ul的li3</li>");
// 使用 prependTo 前加内容
$("<li>ul的li4</li>").prependTo("body");
// 使用 append 后加内容
$("#box").append("<li>ul的li5</li>");
$("#box").append($(".li")); // 当把已存在的元素添加到另一处的时候相当于移动
// 使用 appendTo 后加内容
$("<li>ul的li6</li>").appendTo("#box");
// 使用 before 前加内容
$(".li").before("<li>ul的li7</li>");
// 使用 after 后加内容
$(".li").after("<li>ul的li8</li>");
</script>
</body>
</html>
3.6、删除元素
-
remove():删除所选元素或指定的子元素,包括整个标签和内容一起删除
-
empty():清空所选元素的内容
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<ul id="box">
<li>ul的li1</li>
<li>ul的li2</li>
<li>ul的li3</li>
</ul>
<script>
$("#box").remove();
$("#box").empty();
</script>
</body>
</html>
3.7、遍历元素
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
<ul id="box">
<li>ul的li1</li>
<li>ul的li2</li>
<li>ul的li3</li>
</ul>
<script>
$("li").each(function(index, element) {
console.log(index, element);
console.log($(element));
});
</script>
</body>
</html>