快速入门
jquery介绍
jQuery 是一个 JavaScript 库,内部封装了很多js方法供我们使用,能够大大简化开发提高开发效率。
1.使用步骤
第一步:将jquery-3.3.1.min.js复制到module中
第二步:在页面使用script标签引入jquery文件
第二步:使用jquery中提供的对象和方法
2.代码演示
<body>
<div id="div">我是div</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
// JS方式,通过id属性值来获取div元素
let jsDiv = document.querySelector("#div");
//alert(jsDiv.innerHTML);
// jQuery方式,通过id属性值来获取div元素
let jqDiv=$("#div");
alert(jqDiv.html())
</script>
基本语法
1 jquery核心函数$()(重点)
作用1:$(“css选择器”):根据css选择器查找元素
// jQuery方式,通过id属性值来获取div元素
let jqDiv=$("#div");
alert(jqDiv.html())
作用2:$(js对象):将js对象转换成jquery对象
// jQuery方式,通过id属性值获取div元素
let jqDiv=$("#div");
//alert(jqDiv.innerHTML);//❌,打印undefined
// 将 jQuery对象转换为JS对象
//let jsDiv=jqDiv[0]; //✅
let jsDiv=jqDiv.get(0); //✅
alert(jsDiv.innerHTML); //✅
作用3:$(function(){}):页面加载完成事件,相当于window.οnlοad=function
2 js对象和jquery转换(重点)
2.1 js对象和jquery对象概念
- js对象:通过原生js方法获取到的对象就是js对象,例如:document.getElementByxxx(),document.querySelectorXxx();
- jquery对象:通过jquery核心函数**$()**得到的对象就是jquery对象
2.2 js对象和jquery对象的区别
两种对象可以表示同一个元素,但是不是同一个对象,方法和属性不能混着调用。
2.3 js对象和jquery对象相互转换(重要)
js对象------>jquery对象:let jquery对象=$(js对象);
jquery对象------>js对象:通过索引转换,
例如:jquery对象[索引]或者jquery对象.get(索引),如果只有一个元素,索引就是0
2.4 代码演示
<body>
<div id="div">我是div</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
// JS方式,通过id属性值获取div元素
let jsDiv = document.getElementById("div");
alert(jsDiv.innerHTML);
//alert(jsDiv.html()); JS对象无法使用jQuery里面的功能
// 将 JS 对象转换为jQuery对象
let jq = $(jsDiv);
alert(jq.html());
// jQuery方式,通过id属性值获取div元素
let jqDiv = $("#div");
alert(jqDiv.html());
// alert(jqDiv.innerHTML); jQuery对象无法使用JS里面的功能
// 将 jQuery对象转换为JS对象
let js = jqDiv[0];
alert(js.innerHTML);
</script>
3.事件的简单绑定方式(重点)
注意
window.onload 和 $(function) 区别
* window.onload 只能定义一次,如果定义多次,后边的会将前边的覆盖掉
* $(function)可以定义多次的。
<script>
//页面加载完成
$(function () {
//单击事件
$("#btn").click(function () {
alert("hello");
});
//失去焦点事件
/*$("#input").blur(function () {
alert("输入框失去到焦点了...")
})*/
//绑定表单提交事件
$("#form").submit(function () {
return true;
});
});
</script>
<body>
<form id="form" action="01-对象转换.html" method="get">
<input type="button" id="btn" value="点我">
<br>
<input type="text" id="input" name="username">
<input type="submit">
</form>
</body>
4.事件的绑定和解绑
说明:on(“事件名称”,要执行的函数对象)方法可以用来绑定任意事件,off(“事件名称”)方法解绑事件,不传参表示解绑所有事件。
<body>
<input type="button" id="btn1" value="点我">
<input type="button" id="btn2" value="解绑">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
//给btn1按钮绑定单击事件
$("#btn1").on("click",function () {
alert("hello 黑马");
});
//通过btn2解绑btn1的单击事件
$("#btn2").click(function () {
//对第一个按钮解绑事件
$("#btn1").off("click"); //解绑click单击事件
//$("#btn1").off(); //解绑所有事件
})
</script>
5.jquery事件链式绑定
<body>
<div id="div">我是div</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
//需求:鼠标移到div上,背景色是粉色,移出背景色是白色
//方式一 单独定义
///鼠标移入
/*$("#div").mouseover(function () {
//this就是当前div元素,但是是一个js对象
this.style.backgroundColor="pink";
});*/
//鼠标移出
/* $("#div").mouseout(function () {
//this就是当前div元素,但是是一个js对象
this.style.backgroundColor="white";
})*/
//方式二 链式定义
$("#div").mouseover(function () {
//this就是当前div元素,但是是一个js对象
this.style.backgroundColor="green";
}).mouseout(function () {
//this就是当前div元素,但是是一个js对象
this.style.backgroundColor="white";
})
</script>
6.遍历
<body>
<input type="button" id="btn" value="遍历列表项">
<ul>
<li>传智播客</li>
<li>黑马程序员</li>
<li>传智专修学院</li>
</ul>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
//获取所有的li元素
let lis=$("li");
//方式一:传统方式
for (let i = 0; i <lis .length; i++) {
// console.log(lis[i].innerHTML); //js方式
//如果文本内容是"黑马程序员",则跳过,继续下一次循环
if($(lis[i]).html()=="黑马程序员"){
continue
}
console.log($(lis[i]).html()); //jquery方式
}
console.log("---------------------");
//方式二:对象.each()方法
lis.each(function (index,element) {
/*
this表示当前元素,但是是一个js对象
index 表示索引
element:表示当前元素,和this含义一样,是一个js对象
在each遍历中不能使用continue关键字,使用return true代替continue,作用和continue一样
在each遍历中不能使用break关键字,使用return false代替break,作用和break一样
*/
//console.log(this.innerHTML); //js方式
//如果文本内容是"黑马程序员",则跳过,继续下一次循环
/*if($(this).html()=="黑马程序员"){
return true; //在each遍历中不能使用continue关键字,使用return true代替continue,作用和continue一样
}*/
//如果文本内容是"黑马程序员",则结束循环
if($(this).html()=="黑马程序员"){
return false //在each遍历中不能使用break关键字,使用return false代替break,作用和break一样
}
console.log($(this).html()+","+index);//jquery方式
});
console.log("---------------------");
//方式三:$.each()方法
/*$.each(lis,function (index,element) {
/!*
this表示当前元素,但是是一个js对象
index 表示索引
element:表示当前元素,和this含义一样,是一个js对象
*!/
//console.log(this.innerHTML); //js方式
console.log($(this).html()+","+index);//jquery方式
});
console.log("---------------------");*/
//方式四:for of 语句遍历
for (let li of lis) {
//console.log(li.innerHTML); //js方式
//如果文本内容是"黑马程序员",则结束循环
if($(li).html()=="黑马程序员"){
break;
}
console.log($(li).html()); //jquery方式
}
</script>
jquery选择器
1.基本选择器(重点)
<body>
<div id="div1">div1</div>
<div class="cls">div2</div>
<div class="cls">div3</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
//1.元素选择器 $("元素的名称") 获取所有匹配标签名称的元素
let divs = $("div");
//alert(divs.length);
//2.id选择器 $("#id的属性值")
let div1 = $("#div1");
//alert(div1);
//3.类选择器 $(".class的属性值")
let cls = $(".cls");
alert(cls.length);
</script>
2.层级选择器
<body>
<div>
<span>s1
<span>s1-1</span>
<span>s1-2</span>
</span>
<span>s2</span>
</div>
<div></div>
<p>p1</p>
<p>p2</p>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
// 1. 后代选择器 $("A B"); A下的所有B(包括B的子级)
let spans1 = $("div span");
//alert(spans1.length);
// 2. 子选择器 $("A > B"); A下的所有B(不包括B的子级)
let spans2 = $("div > span");
//alert(spans2.length);
// 3. 兄弟选择器 $("A + B"); A相邻的下一个B
let ps1 = $("div + p");
//alert(ps1.length);
// 4. 兄弟选择器 $("A ~ B"); A相邻的所有B
let ps2 = $("div ~ p");
alert(ps2.length);
</script>
3.属性选择器
<body>
<input type="text">
<input type="password">
<input type="password">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
//1.属性名选择器 $("元素[属性名]")
let in1 = $("input[type]");//3
//alert(in1.length);
//2.属性值选择器 $("元素[属性名=属性值]")
let in2 = $("input[type='password']");//2
alert(in2.length);
</script>
4.过滤选择器
<body>
<div>div1</div>
<div id="div2">div2</div>
<div>div3</div>
<div>div4</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
// 1.首元素选择器 $("A:first");
let div1 = $("div:first");
//alert(div1.html());
// 2.尾元素选择器 $("A:last");
let div4 = $("div:last");
//alert(div4.html());
// 3.非元素选择器 $("A:not(B)");
let divs1 = $("div:not(#div2)");
//alert(divs1.length);
// 4.偶数选择器 $("A:even");
let divs2 = $("div:even");div1 div 3
//alert(divs2.length);
//alert(divs2[0].innerHTML);
//alert(divs2[1].innerHTML);
// 5.奇数选择器 $("A:odd");
let divs3 = $("div:odd");// div2 div4
//alert(divs3.length);
//alert(divs3[0].innerHTML);
//alert(divs3[1].innerHTML);
// 6.等于索引选择器 $("A:eq(index)");
let div3 = $("div:eq(2)");//div3
//alert(div3.html());
// 7.大于索引选择器 $("A:gt(index)");
let divs4 = $("div:gt(1)");//div3 div4
//alert(divs4.length);
//alert(divs4[0].innerHTML);
//alert(divs4[1].innerHTML);
// 8.小于索引选择器 $("A:lt(index)");
let divs5 = $("div:lt(2)");//div1 div2
alert(divs5.length);
alert(divs5[0].innerHTML);
alert(divs5[1].innerHTML);
</script>
5.表单属性选择器
<body>
<input type="text" disabled>
<input type="text" >
<input type="radio" name="gender" value="men" checked>男
<input type="radio" name="gender" value="women">女
<input type="checkbox" name="hobby" value="study" checked>学习
<input type="checkbox" name="hobby" value="sleep" checked>睡觉
<select>
<option>---请选择---</option>
<option selected>本科</option>
<option>专科</option>
</select>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
// 1.可用元素选择器 $("A:enabled");
let ins1 = $("input:enabled");//5
//alert(ins1.length);
// 2.不可用元素选择器 $("A:disabled");
let ins2 = $("input:disabled");//1
//alert(ins2.length);
// 3.单选/复选框被选中的元素 $("A:checked");
let ins3 = $("input:checked");//3
//alert(ins3.length);
//alert(ins3[0].value);
//alert(ins3[1].value);
//alert(ins3[2].value);
// 4.下拉框被选中的元素 $("A:selected");
let select = $("select option:selected");//1
alert(select.html());
</script>
DOM操作(重要)
1.操作文本(重要)
- html():相当于之前的innerHTML属性
传递参数表示设置内容体html代码,不传参表示获取内容体html代码
- text():相当于之前的innerText属性
传递参数表示设置内容纯文本,不传参表示获取内容体纯文本。
- val():相当于之前的value属性
传递参数表示设置输入框中的内容,不传参表示获取输入框中的内容。
1. 通用属性操作
1. attr(): 获取/设置元素的属性
2. removeAttr():删除属性
3. prop():获取/设置元素的属性
4. removeProp():删除属性
2.attr和prop区别?
1. 如果操作的是元素的固有属性,则建议使用prop
2. 如果操作的是元素自定义的属性,则建议使用attr
3. 对class属性操作
1. addClass():添加class属性值
2. removeClass():删除class属性值
3. toggleClass():切换class属性
* toggleClass("one"):
* 判断如果元素对象上存在class="one",则将属性值one删除掉。 如果元素对象上不存在class="one",则添加
4. css():
<body>
<div id="div">我是div</div>
<input type="button" id="btn1" value="获取div的文本">
<input type="button" id="btn2" value="设置div的文本">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
//1. html() 获取标签的文本内容
$("#btn1").click(function(){
//获取div标签的文本内容
let value = $("#div").html();
alert(value);
});
//2. html(value) 设置标签的文本内容,解析标签
$("#btn2").click(function(){
//设置div标签的文本内容
//$("#div").html("我真的是div");
$("#div").html("<b>我真的是div</b>");
});
</script>
注意
对于双标签,设置里面的文本就使用html()
对于input这种标签,设置里面的文本值就用val()
<body>
<div id="div">你是傻瓜</div>
<input type="text" id="in1">
<script src="../js/jquery-3.3.1.min.js"></script>
<script>
//jq方式
$("#div").html("哈哈哈哈哈哈哈");
// $("#in1").html("黑马程序员");//不好使
$("#in1").val("黑马程序员");//不好使
//js方式
// document.getElementById("in1").value="黑马程序员";
// document.getElementById("div").innerHTML="哇哇哇哇哇哇哇哇哇哇哇哇";
</script>
</body>
2.操作标签CRUD(了解)
<body>
<div id="div"></div>
<input type="button" id="btn1" value="添加一个span到div"> <br><br><br>
<input type="button" id="btn2" value="将加油添加到城市列表最下方">
<input type="button" id="btn3" value="将加油添加到城市列表最上方">
<input type="button" id="btn4" value="将雄起添加到上海下方">
<input type="button" id="btn5" value="将雄起添加到上海上方">
<ul id="city">
<li id="bj">北京</li>
<li id="sh">上海</li>
<li id="gz">广州</li>
<li id="sz">深圳</li>
</ul>
<ul id="desc">
<li id="jy">加油</li>
<li id="xq">雄起</li>
</ul> <br><br><br>
<input type="button" id="btn6" value="将雄起删除">
<input type="button" id="btn7" value="将描述列表全部删除">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
/*
1. $("html代码") 创建指定元素
内部插入:有子父关系
2. append(element) 添加成最后一个子元素,由添加者对象调用
3. appendTo(element) 添加成最后一个子元素,由被添加者对象调用
4. prepend(element) 添加成第一个子元素,由添加者对象调用
5. prependTo(element) 添加成第一个子元素,由被添加者对象调用
外部插入:
6. before(element) 添加到当前元素的前面,两者之间是兄弟关系,由添加者对象调用
7. after(element) 添加到当前元素的后面,两者之间是兄弟关系,由添加者对象调用
8. remove() 删除指定元素(自己移除自己)
9. empty() 清空指定元素的所有子元素
*/
// 按钮一:添加一个span到div
$("#btn1").click(function () {
//$("#div").append("<span>传智播客</span>")
$("<span>传智播客</span>").appendTo($("#div"));
});
//按钮二:将加油添加到城市列表最下方
$("#btn2").click(function () {
// $("#city").append($("#jy"));
$("#jy").appendTo($("#city"));
});
//按钮三:将加油添加到城市列表最上方
$("#btn3").click(function () {
// $("#city").prepend($("#jy"));
$("#jy").prependTo($("#city"));
});
//按钮四:将雄起添加到上海下方
$("#btn4").click(function () {
$("#sh").after($("#xq"));
});
//按钮五:将雄起添加到上海上方
$("#btn5").click(function () {
$("#sh").before($("#xq"));
});
//按钮六:将雄起删除
$("#btn6").click(function () {
$("#xq").remove();
});
//按钮七:将描述列表全部删除
$("#btn7").click(function () {
$("#desc").empty();
});
</script>
3.操作样式(了解)
- css(name):根据样式名获取样式值
- css(name,value):设置一组样式
- css({name:value,name:value,…}) :设置CSS多组样式,也可以使用addClass()通过添加clas属性得到样式。
<body>
<div style="border: 1px solid red;" id="div">我是div</div>
<input type="button" id="btn1" value="获取div的样式">
<input type="button" id="btn2" value="设置div的背景色为蓝色">
<br><br><br>
<input type="button" id="btn3" value="给div设置cls1样式">
<input type="button" id="btn4" value="给div删除cls1样式">
<input type="button" id="btn5" value="给div设置或删除cls1样式">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
// 1.css(name) 获取css样式
$("#btn1").click(function () {
console.log($("#div").css("border"));
});
// 2.css(name,value) 设置CSS一组样式
/*$("#btn2").click(function () {
//设置div的背景色为蓝色
// $("#div").css("background-color","blue");
$("#div").css("backgroundColor","blue");
});*/
// 2.css({name:value,name:value,...}) 设置CSS多组样式
$("#btn2").click(function () {
//设置div的字体30px,颜色pink
// $("#div").css("fontSize","30px").css("color","pink")
$("#div").css({"fontSize":"50px","color":"green"});
});
// 3.addClass(value) 给指定的对象添加样式类名
$("#btn3").click(function () {
$("#div").addClass("cls1")
});
// 4.removeClass(value) 给指定的对象删除样式类名
$("#btn4").click(function () {
$("#div").removeClass("cls1")
});
// 5.toggleClass(value) 如果没有样式类名,则添加。如果有,则删除
$("#btn5").click(function () {
$("#div").toggleClass("cls1")
});
</script>
4.操作属性(重要)
说明:在操作checked、selected属性时推荐使用prop()方法,操作其他属性使用attr()方法
<body>
<input type="text" id="username">
<br>
<input type="button" id="btn1" value="获取输入框的id属性">
<input type="button" id="btn2" value="给输入框设置value属性">
<br><br>
<input type="radio" id="gender1" name="gender">男
<input type="radio" id="gender2" name="gender">女
<br>
<input type="button" id="btn3" value="选中女">
<br><br>
<select>
<option>---请选择---</option>
<option id="bk">本科</option>
<option id="zk">专科</option>
</select>
<br>
<input type="button" id="btn4" value="选中本科">
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script>
// 1.attr(name,[value]) 获得/设置属性的值
//按钮一:获取输入框的id属性
$("#btn1").click(function(){
alert($("#username").attr("id"));
});
//按钮二:给输入框设置value属性
$("#btn2").click(function(){
$("#username").attr("value","hello...");
});
// 2.prop(name,[value]) 获得/设置属性的值(checked,selected)
//按钮三:选中女
$("#btn3").click(function(){
$("#gender2").prop("checked",true);
});
//按钮四:选中本科
$("#btn4").click(function(){
$("#bk").prop("selected",true);
});
</script>