jQuery 操作标签的内容
html()方法
- html()方法相当于原生JS中的innerHTML属性,用来获取或设置标签内部内容。
- 功能
- 获取:文本和内部标签,语法:jquery对象.html();
- 设置: 若设置标签时,标签会被渲染。语法:jquery对象.html("文本内容");
<div class="box">
<p>hello</p>
<p>hello</p>
<p>hello</p>
</div>
<div class="box">
<p>hello</p>
<p>hello</p>
<p>hello</p>
</div>
<input type="text" value="请输入你的名字">
<script src="../js/jquery.min.js"></script>
<script>
var $box = $(".box");
console.log($box.html());
$box.html("<p>这是唯一的p标签</p>");
</script>
text()方法
- text()方法相当于原生JS中的innerText属性,用来获取或设置标签内部文字。
- 功能
- 获取:仅仅是文本,会忽略标签,语法:jQuery对象.text();
- 设置: 若设置标签时,标签会被当做普通文本,语法:jQuery对象.text("文本内容");
console.log($box.text());
$box.text("<p>这是唯一的p标签</p>");
- 注意:获取时,将所有获取到的元素的内部文案输出,忽略标签。
针对单标签和双标签
- 单标签不能调用html()、text()方法
- 演示代码
<div class="box">
<p>hello</p>
<p>hello</p>
<p>hello</p>
</div>
<div class="box">
<p>hello</p>
<p>hello</p>
<p>hello</p>
</div>
<input type="text" value="请输入你的名字">
<textarea class ="txt" cols="30" rows="10">请输入自我介绍</textarea>
<select class="sel">
<option value="tianjin">天津</option>
<option value="chengdu">成都</option>
<option value="beijing">北京</option>
</select>
<script src="../js/jquery.min.js"></script>
<script>
var $box = $(".box");
var $inp = $("input");
var $txt = $(".txt");
var $sel = $(".sel");
var $opt = $("option");
console.log($inp.html());
console.log($inp.text());
console.log($txt.html());
console.log($txt.text());
console.log($sel.html());
console.log($sel.text());
val()方法
- val()方法相当于原生JS中的value属性,用来获取或设置表单元素内容。
- 功能
- 获取:表单元素的value,语法:jQuery对象.val();
- 设置: 表单元素的value,语法:jQuery对象.val("文本内容");
- 演示代码
console.log($box.val());
console.log($inp.val());
console.log($txt.val());
console.log($sel.val());
console.log($opt.val());
$inp.val("lalla");
$txt.val("你好");
$sel.val("beijing");
$opt.val("dishini");
jQuery 操作标签的属性
attr()方法
- attr:全称 attribute,属性的意思。
- 作用:用来获取或者设置标签的属性值(自定义属性的设置和获取也可以)。
- 设置标签的属性
- 语法:jQuery对象.attr(name,value);
- 获取标签属性值
- 演示代码
console.log($box.attr("class"));
$img.attr("src","../img/cat2.jpg");
$img.attr("hobby","cat");
console.log($img.attr("hobby"));
removeAttr()方法
- 作用:移除标签的属性
- 语法:removeAttr(name);
- 演示代码
$img.removeAttr("hobby");
prop()方法
- 针对:selected、checked、disabled等表单元素的属性。此类属性的属性值与属性名相同。
- 通过原生js获取的是布尔值,而jQuery对象的attr()方法获得的是与属性名相同的值(并非布尔值),因此在使用的时候可能需要转换,现在用prop()方法获取的就是布尔值(解决问题)。
- 获取
语法:$('input').prop('属性名');
- 设置
语法:$('input').prop('属性名',值);
- 演示代码
var opt = document.querySelector(".current");
console.log(opt.selected);
var $opt = $(".current");
console.log($opt.attr("selected"));
console.log($opt[0].selected);
console.log($opt.prop("selected"));
$opt.prop("selected",false);
jQuery 操作样式方法
css()方法
- jQuery 对象有一个 css() 的方法,用于调用 css 属性值或者更改 css 属性值。
- 语法:jQuery对象.css(name,value);
- 参数1:字符串格式的 css 样式属性名
- 参数2:设置或更改的属性值。
注意
- 一个参数:表示调用 css 属性的值,得到的是某个元素的计算后样式,值为字符串格式。
- 两个参数:表示设置 css 样式属性,第二个参数可以是字符串格式的属性值,如果带单位的数字的属性值,可以写成带单位的字符串格式、不带单位的字符串、纯数字、带 += 等赋值运算的字符串。
<div class="box" style="width: 300px;"></div>
<script src="../js/jquery.min.js"></script>
<script>
var $box = $(".box");
console.log($box.css("width"));
$box.css("width","400");
$box.css("width","+=200");
</script>
- css() 方法的第一个参数,复合属性的单一属性写法可以是驼峰命名法,也可以是横线写法。
$box.css("backgroundColor","skyblue");
$box.css("background-color","skyblue");
- 可以给同一个对象同时设置多条 css 属性,将多条属性的属性和属性值写成对象格式,传给 css()的参数。
$box.css({
width: 200,
backgroundColor: "green"
});
jQuery 操作类名方法
<input type="button" value="添加" class="btn1">
<input type="button" value="删除" class="btn2">
<input type="button" value="切换" class="btn3">
<div class="box"></div>
addClass()添加类名
- 语法:jQuery对象.addClass('类名')
- 参数:字符串格式的类名。
- 演示代码
$btn1.click(function (){
$box.addClass("demo");
});
removeClass()移除类名
- 删除指定的类名
- 语法:jQuery对象.removeClass();
- 传参数:字符串格式的类名。
- 不传参数:表示删除所有的类名
- 演示代码
$btn2.click(function (){
$box.removeClass("demo");
});
toggleClass()类名切换
- 若这个类名存在,则会移除该类名;否则添加该类名。
- 语法:jQuery对象.toggleClass('类名');
- 参数:字符串格式的类名。
- 优点:三个方法只操作参数部分的类名,不影响原有的其他类名。
- 演示代码
$btn3.click(function (){
$box.toggleClass("demo");
});
hasClass()检测类名是否存在
- 语法:jQuery对象.hasClass('类名');
- 返回值:true 和 false
- 演示代码
console.log($box.hasClass("box"));
jQuery 常用事件方法
- jQuery 对象封装了一系列的事件方法。
- 事件方法与原生JS事件方法名称类似,不需要写on。
- 事件方法需要jQuery对象打点调用,小括号内的参数是事件函数。
- 例如点击事件:click()方法。
mouseenter()方法
- jQuery 中自己的事件方法。
- 功能:鼠标进入一个元素触发的事件。
$out.mouseenter(function (){
console.log("out-mouse-in");
});
$inner.mouseenter(function (){
console.log("inner-mouse-in");
});
mouseleave()方法
- jQuery 中自己的事件方法。
- 功能:鼠标离开一个元素触发的事件。
$out.mouseleave(function (){
console.log("out-mouse-out");
});
$inner.mouseleave(function (){
console.log("inner-mouse-out");
});
对比
- 注意:mouseenter 和 mouseleave 没有事件冒泡。
- 在使用时替换 mouseover 和 mouseout 更加合适。
- 演示代码
<div class="out">
<div class="inner"></div>
</div>
$out.mouseover(function (){
console.log("out-mouse-in");
});
$inner.mouseover(function (){
console.log("inner-mouse-in");
});
$inner.mouseout(function (){
console.log("inner-mouse-out");
});
$out.mouseout(function (){
console.log("out-mouse-out");
});
hover()方法
- hover 事件相当于将 mouseoenter 和 mouseleave 事件进行了合写,不存在事件冒泡。
- 参数:有两个参数,第一个参数是鼠标移上执行的事件函数,第二个参数是鼠标离开执行事件函数。
- 演示代码
$out.hover(function(){
console.log("in");
},function (){
console.log("out");
});
jQuery 关系查找方法
<div class="box">
<p>hi</p>
<p>hi</p>
<p>hi</p>
<p>hi</p>
<p>hi</p>
<h2>h2</h2>
<h2>h2</h2>
<h2>h2</h2>
</div>
<div class="box">
<p>nihao</p>
<p>nihao</p>
<p>nihao</p>
<h2>h2</h2>
<h2>h2</h2>
<h2>h2</h2>
<p>nihao</p>
<p>nihao</p>
</div>
$(this)自己
- 在原生的 DOM 操作中,事件函数内部有一个 this 关键字指向的就是触发事件的事件源,在 jQuery 中将 this 关键字传递给 $() 方法,得到就是指向自己的 jQuery 对象,就可
以使用 JQ 的方法。
- 演示代码
var $ps = $("p");
$ps.click(function (){
$(this).css("backgroundColor","pink");
});
parent()父级
- jQuery 对象都有一个 parent() 方法,得到的是自己的父亲级(唯一的)。
- 父级得到的也是一个 jQuery 对象,直接继续打点调用 JQ 方法和属性。
- 演示代码
$ps.click(function (){
$(this).parent().css("background-color","skyblue");
});
children()子级:可参数筛选
- jQuery 对象内部有一个 children() 方法,可以得到自己的所有子级元素组成的 jQuery对象。
- 得到的子级组成的 jQuery 对象可以继续调用 JQ 方法和属性。
- 获得子级时,不限制标签类型。
- children()可以传参数:参数是字符串格式的选择器,在选中所有子级的情况下,保留满足选择器的部分,进行了二次选择。
- 演示代码
$box.click(function (){
$(this).children().css("background-color","yellowgreen");
$(this).children("h2").css("background-color","pink");
});
siblings()兄弟:可参数筛选
- jQuery 对象通过调用 siblings() 方法可以得到除了自己以外的所有同级元素(兄弟)组成 jQuery 对象,找到的只能是亲的兄弟,不能是叔叔家的兄弟。
- 得到 jQuery 对象可以继续使用 JQ 的方法和属性。
- siblings() 方法得到的 jQuery 对象可以进行二次选择,通过给参数传递字符串格式的选择器。
- 演示代码
$ps.click(function (){
$(this).siblings().css("background-color","skyblue");
$(this).siblings("p").css("background-color","lightcoral");
});
注意
$ps.click(function (){
$(this).siblings("p").css("background-color","lightcoral");
});
$box.click(function (){
$(this).children("h2").css("background-color","pink");
});
- 图片示例

链式调用
链式调用概述
- jQuery 对象调用任何方法(除了节点关系方法)执行完后,方法都会有一个返回值,返回值就是 jQuery对象自己,这个现象给我们提供了便利,可以对执行结果继续打点调用JQ的方法和属性。
- 可以使用 jQuery 对象进行连续打点调用。
案例
- 案例1:点击一个元素,让他自己变红色,兄弟级变金色。
$ps.click(function (){
$(this).css("background-color","red")
.siblings().css("background-color","gold");
});
- 案例2:升级版本,点击一个元素,让他自己变红色,兄弟变金色,他们的父级变粉色,父亲的兄弟变蓝色,父亲的兄弟的子级变黄绿色。
$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");
});
jQuery 其他关系查找方法
<div class="box">
<p>hi</p>
<p>hi</p>
<p>
<h2>啦啦</h2>
</p>
<p>hi</p>
<p>hi</p>
<h2>h2</h2>
<h2>h2</h2>
<h2>h2</h2>
</div>
<div class="box">
<p>nihao</p>
<p>
<h2>啦啦</h2>
</p>
<p>nihao</p>
<h2>h2</h2>
<h2>h2</h2>
<h2>h2</h2>
<p>nihao</p>
<p>nihao</p>
</div>
find()后代元素: 必须传参数
- jQuery 对象可以利用 find() 方法,传递一个参数,参数部分规定的选择器,查找范围是jQuery 对象的所有后代(子孙等).
- 参数是字符串格式的选择器。
- 不局限于找到子级,而是符合条件的后代.
- 演示代码
$box.find("h2").css({
"background-color":"red",
width: 20,
height:20
});
兄弟元素
- 紧邻的兄弟元素方法
- next() 下一个兄弟
- prev() 上一个兄弟
- 代码演示
$ps.click(function (){
$(this).next().css("background-color","red");
$(this).prev().css("background-color","gold");
});
- 多选方法(可传参进行筛选)
- nextAll() 后面所有兄弟
- prevAll() 前面所有兄弟
- 通过传递参数可以进行二次选择,参数是字符串格式的选择器,在前面或后面兄弟中选中符合选择器规定的部分。
- 演示代码
$ps.click(function (){
$(this).nextAll().css("background-color","red");
$(this).prevAll().css("background-color","gold");
$(this).nextAll("h2").css("background-color","red");
$(this).prevAll("p").css("background-color","gold");
});
parents()祖先级: 可传参筛选
- 通过该方法得到的是指定对象的包含body在内的所有祖先级元素组成的 jQuery 对象。
- 通过传参进行二次选择,参数位置是字符串格式的选择器
- 演示代码
$ps.click(function (){
$(this).parents().css("background-color","skyblue");
$(this).parents(".box").css("background-color","skyblue");
});
综合案例
发送验证码控制按钮禁用
var $btn = $("#btn");
$btn.click(function (){
var s = 5;
$(this).prop("disabled",true)
.val(s + "秒后重新发送");
var timer = setInterval(() => {
s--;
$(this).val(s + "秒后重新发送");
if(s <= 0){
clearInterval(timer);
$(this).prop("disabled",false).val("发送");
}
},1000);
});
- 注意:出现了一个问题,就是:定时器内部的this指向的是window,出现错误
- 解决方法:替换成箭头函数
放大镜切换项
<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="js/jquery.min.js"></script>
<script>
var $imgs = $(".leftBox ul li img");
var $mimg = $(".leftBox .top img");
var $bimg = $(".rightBox img");
$imgs.click(function (){
$(this).parent().addClass("active").siblings().removeClass("active")
var msrc = $(this).attr("msrc");
var bsrc = $(this).attr("bsrc");
var path = "img/";
$mimg.attr("src",path + msrc);
$bimg.attr("src",path + bsrc);
});
</script>
</body>