jQuery 操作标签的内容
html() 方法
html() 方法相当于原生 JS 中的 innerHTML 属性,用来获取或设置标签内部内容。方法可以传递一个参数,自定义的字符串内容。 ? 获取:文本和内部标签,获取时只能获取第一个元素内部的文案 语法:jQuery对象.html(); ? 设置:若设置标签时,标签会被渲染 语法:jQuery对象.html(‘文本内容’); 示例:
console.log($box.html())
$box.html("这是一个新的内容")

$box.html('这是新增加的子级<p>这是段落</p>')

text() 方法
text() 方法相当于原生 JS 中的 innerText 属性,用来获取或设置标签内部文字。 ? 获取:获取标签内部的文字内容,忽略标签 语法:jQuery对象.text(); ? 设置:若设置标签时,标签会被当做普通文本 语法:jQuery对象.text(‘文本内容’); 示例:
console.log($box.text())

$box.text("普通文本<p>段落</p>")

val() 方法
val() 方法相当于原生 JS 中的 value 属性,用来获取或设置表单元素内容。 ? 获取:表单元素的 value 属性的值 语法:jQuery对象.val(); ? 设置:表单元素的value 值 语法:jQuery对象.val(‘文本内容’);
jQuery 操作标签的属性
attr() 方法
attr:全称 attribute,属性的意思。作用:用来获取或者设置标签的属性值。既可以设置或获取已规定好的属性,还可以获取设置自定义的属性。 ? 设置标签的属性 语法:jQuery对象.attr(name,value);
$pic.attr("src","images/cat2.jpg")
$pic.attr("hobby","sleep")
? 获取标签属性值 语法:jQuery对象.attr(name);
console.log($pic.attr("alt"))
console.log($pic.attr("hobby"))
removeAttr() 方法
作用:移除标签的属性 语法:removeAttr(name);
prop() 方法
针对:selected、checked、disabled 等表单元素的属性。此类属性的属性值与属性名相同。 ? 获取 语法:
(
′
i
n
p
u
t
′
)
.
p
r
o
p
(
′
属
性
名
′
)
;
?
设
置
语
法
:
('input').prop('属性名'); ? 设置 语法:
(′input′).prop(′属性名′);?设置语法:(‘input’).prop(‘属性名’,值); 示例:
console.log($btn.prop("disabled"))
$btn.prop("disabled",false)
jQuery 操作样式方法
css() 方法
jQuery 对象有一个 css() 的方法,用于调用 css 属性值或者更改 css 属性值。 ? 语法:jQuery对象.css(name,value); ? 参数1:字符串格式的 css 样式属性名 ? 参数2:设置或更改的属性值。 注意: ? 一个参数:表示调用 css 属性的值,得到的是某个元素的计算后样式,值为字符串格式。
console.log($box.css("width"))
? 两个参数:表示设置 css 样式属性,第二个参数可以是字符串格式的属性值,如果带单位的数字的属性值,可以写成带单位的字符串格式、不带单位的字符串、纯数字、带 += 等赋值运算的字符串。
$box.css("width","400px")
$box.css("width","400")
$box.css("width",500)
$box.css("width","+=100px")
? css() 方法的第一个参数,复合属性的单一属性写法可以是驼峰命名法,也可以是横线写法。
console.log($box.css("background-color"))
console.log($box.css("backgroundColor"))
? 可以给同一个对象同时设置多条 css 属性,将多条属性的属性和属性值写成对象格式,传给 css() 的参数。
$box.css({
"width": 200,
"height": 300
})
jQuery 操作类名方法
addClass() 添加类名
?语法:jQuery对象.addClass(‘类名’) ?参数:字符串格式的类名。
removeClass() 移除类名
删除指定的类名。 ? 语法:jQuery对象.removeClass(); ? 参数:字符串格式的类名。不传参数,表示删除所有类名。
toggleClass() 类名切换
若这个类名存在,则会移除改类名。否则添加改类名。 ? 语法:jQuery对象.toggleClass(‘类名’); ? 参数:字符串格式的类名。 示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
.box{
width: 100px;
height: 100px;
background-color: pink;
}
.demo{
background-color: skyblue;
}
</style>
</head>
<body>
<input type="button" value="添加" id="btn1">
<input type="button" value="删除" id="btn2">
<input type="button" value="切换" id="btn3">
<div id="box" class="box"></div>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
var $box = $("#box");
var $btn1 = $("#btn1");
var $btn2 = $("#btn2");
var $btn3 = $("#btn3");
$btn1.click(function () {
$box.addClass("demo")
})
$btn2.click(function () {
$box.removeClass("demo")
})
$btn3.click(function () {
$box.toggleClass("demo")
})
</script>
</body>
</html>
优点:这三个操作类名的方法只操作参数部分的类名,不影响原有的其他类名。
hasClass() 检测类名是否存在
? 语法:jQuery对象.hasClass(‘类名’); ? 返回值:true 和 false 示例: 以上一个示例的html结构为例,模拟toggleClass() 类名切换的效果
console.log($box.hasClass("demo"))
$btn3.click(function () {
if ($box.hasClass("demo")) {
$box.removeClass("demo")
} else {
$box.addClass("demo")
}
})
jQuery 常用事件方法
jQuery对象封装了一系列的事件方法。 事件方法与原生JS事件方法名称类似,不需要写 on,需要jQuery对象打点调用,小括号内的参数是事件函数。 例如点击事件:click()方法。
mouseenter() 方法
鼠标进入一个元素触发的事件。
$box.mouseenter(function () {
console.log("box-mouse-in")
})
mouseleave() 方法
鼠标离开一个元素触发的事件。
$box.mouseleave(function () {
console.log("box-mouse-out")
})
对比:mouseenter 和 mouseleave 没有事件冒泡。mouseover 和 mouseout有事件冒泡。 示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
#parents{
width: 200px;
height: 200px;
background-color: yellowgreen;
}
.box{
width: 100px;
height: 100px;
background-color: pink;
}
.demo{
background-color: skyblue;
}
</style>
</head>
<body>
<input type="button" value="切换" id="btn1">
<div id="parents">
<div id="box" class="box"></div>
</div>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
var $box = $("#box");
var $btn1 = $("#btn1");
var $parents = $("#parents");
$box.mouseenter(function () {
console.log("box-mouse-in")
})
$box.mouseleave(function () {
console.log("box-mouse-out")
})
$parents.mouseenter(function () {
console.log("parents-mouse-in")
})
$parents.mouseleave(function () {
console.log("parents-mouse-out")
})
</script>
</body>
</html>
输出结果: 点击粉色背景时,输出  点击绿色背景时,输出 :box-mouse-out 在div元素外面点击时,只输出:parents-mouse-out
mouseover 和 mouseout的示例:
$box.mouseover(function () {
console.log("box-mouse-in")
})
$box.mouseout(function () {
console.log("box-mouse-out")
})
$parents.mouseover(function () {
console.log("parents-mouse-in")
})
$parents.mouseout(function () {
console.log("parents-mouse-out")
})
输出结果: 点击粉色背景时,输出  点击绿色背景时,输出  再回到粉色背景点击时,输出  在使用时,用 mouseenter 和 mouseleave 替换 mouseover 和 mouseout 更加合适。
hover() 方法
该方法相当于将 mouseoenter 和 mouseleave 事件进行了合写。 参数:有两个参数,第一个参数是鼠标移上执行的事件函数,第二个参数是鼠标离开执行事件函数。 示例:
$box.hover(function () {
$box.addClass("demo")
},function () {
$box.removeClass("demo")
})
jQuery 关系查找方法
$(this) 自己
在原生的 DOM 操作中,事件函数内部有一个 this 关键字指向的就是触发事件的事件源,在 jQuery 中将 this 关键字传递给 $() 方法,得到就是指向自己的 jQuery 对象,就可以使用 JQ 的方法。
var $ps = $("p")
$ps.click(function () {
$(this).css("background-color","red")
})
parent() 父级
jQuery 对象都有一个 parent() 方法,得到的是自己的父亲级。父级得到的也是一个 jQuery 对象,直接继续打点调用 JQ 方法和属性。
var $ps = $("p")
$ps.click(function () {
$(this).parent().css("background-color","yellow")
})
children() 子级
jQuery 对象内部有一个 children() 方法,可以得到自己的所有子级元素组成的jQuery对象。得到的子级组成的 jQuery 对象可以继续调用 JQ 方法和属性。获得子级时,不限制标签类型。
var $box = $(".box")
$box.click(function () {
$(this).children().css("background-color","pink")
})
children() 可以传参数:参数是字符串格式的选择器,在选中所有子级的情况下,保留满足选择器的部分,进行了二次选择。
$(this).children("p").css("background-color","pink")
siblings() 兄弟
jQuery 对象通过调用 siblings() 方法可以得到除了自己以外的所有同级元素(兄弟)组成 jQuery 对象,找到的只能是亲的兄弟,不能是叔叔家的兄弟。得到 jQuery 对象可以继续使用 JQ 的方法和属性。
var $ps = $("p")
$ps.click(function () {
$(this).siblings().css("background-color","skyblue")
})
siblings() 方法得到的 jQuery 对象可以进行二次选择,通过给参数传递字符串格式的选择器。示例:
$(this).siblings("h2").css("background-color","skyblue")
链式调用
jQuery 对象调用任何方法(除了节点关系方法)执行完后,方法都会有一个返回值,返回值就是 jQuery 对象自己,这个现象给我们提供了便利,可以对执行结果继续打点调用 JQ的方法和属性。 可以使用 jQuery 对象进行连续打点调用。 案例: 点击一个元素,让他自己变红色,兄弟级变金色。他们的父级变粉色,父亲的兄弟变蓝色,父亲的兄弟的子级变黄绿色。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.box {
width: 1000px;
height: 80px;
border: 1px solid #333;
margin-top: 10px;
}
.box p,
.box h2 {
float: left;
width: 80px;
height: 80px;
margin-right: 20px;
background-color: #ccc;
}
</style>
</head>
<body>
<div class="box">
<p>p</p>
<p>p</p>
<p>p</p>
<p>p</p>
<h2>h2</h2>
<h2>h2</h2>
<h2>h2</h2>
</div>
<div class="box">
<p>p</p>
<p>p</p>
<p>p</p>
<p>p</p>
<h2>h2</h2>
<h2>h2</h2>
<h2>h2</h2>
</div>
<div class="box">
<p>p</p>
<p>p</p>
<p>p</p>
<p>p</p>
<h2>h2</h2>
<h2>h2</h2>
<h2>h2</h2>
</div>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
var $ps = $("p")
var $box = $(".box")
$ps.click(function () {
$(this).css("background-color", "red")
.siblings().css("background-color", "gold")
.parent().css("background-color", "pink")
.siblings().css("background-color", "blue")
.children().css("background-color", "yellowgreen")
})
</script>
</body>
</html>
jQuery 其他关系查找方法
(1)find() 后代元素 jQuery 对象可以利用 find() 方法,传递一个参数,参数部分规定的选择器,查找范围是jQuery 对象的所有后代。参数是字符串格式的选择器。 (2)兄弟元素 紧邻的兄弟元素方法: ? next() 下一个兄弟 ? prev() 前一个兄弟 多选方法: ? nextAll() 后面所有兄弟 ? prevAll() 前面所有兄弟 通过传递参数可以进行二次选择,参数是字符串格式的选择器,在前面或后面兄弟中选中符合选择器规定的部分。 (3)parents() 祖先级 通过该方法得到的是指定对象的包含 body 在内的所有祖先级元素组成的 jQuery 对象。通过传参进行二次选择,参数位置是字符串格式的选择器
综合案例
案例1:发送验证码控制按钮禁用
点击发送验证码之后,按钮禁用,5秒之后取消禁用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="text">
<input type="button" value="发送">
<script src="js/jquery-1.12.4.min.js"></script>
<script>
var $btn = $("input:button")
$btn.click(function () {
var n = 5;
$(this).prop("disabled",true).val(n + "s 后重新发送")
var timer = setInterval(() => {
n--;
$(this).val(n + "s 后重新发送")
if (n <= 0) {
clearInterval(timer)
$(this).val("重新发送").prop("disabled",false)
}
},1000)
})
</script>
</body>
</html>
案例2:放大镜切换项
鼠标移上便放大该图片
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="index.css">
</head>
<body>
<div class="w">
<div class="leftBox">
<div class="top">
<img src="img/m1.jpg">
</div>
<ul>
<li class="active">
<img src="img/s1.jpg" msrc="m1.jpg" bsrc="b1.jpg">
</li>
<li>
<img src="img/s2.jpg" msrc="m2.jpg" bsrc="b2.jpg">
</li>
<li>
<img src="img/s3.jpg" msrc="m3.jpg" bsrc="b3.jpg">
</li>
</ul>
</div>
<div class="rightBox">
<img src="img/b1.jpg" alt="">
</div>
</div>
<script src="lib/jquery-1.12.4.js"></script>
<script>
var $imgs = $(".leftBox ul li img");
var $mimg = $(".leftBox .top img")
var $bimg = $(".rightBox img")
$imgs.mouseenter(function () {
$(this).parent().addClass("active").siblings().removeClass("active")
var path = "img/";
var msrc = path + $(this).attr("msrc");
var bsrc = path + $(this).attr("bsrc");
$mimg.attr("src", msrc)
$bimg.attr("src", bsrc)
})
</script>
</body>
</html>
|