一、认识以及引入jquery
1.jquery是什么
jquery是一种新的javascript库。jq是用js写的,能用jq实现的,用js都可以实现。
jq的API只对自己开放,jq不能用js的API,js也不能用jq的API。
2.引入方式
script标签引入
网络调用
<
script
src
=
"https://cdn.bootcss.com/jquery/3.2.0/jquery.js"
></
script
>
本地调用
<
script
src="jquery.js的本地地址"></
script
>
3.常用方法
jQuery $ 传字符串/选择器/尖括号标签的形式/函数/object
var $box = $("#box");
$box.html(999);
$("#box").html("<em>拉拉</em>");
jq里的html相当于js里的innerHTML
var obj = $("<em>哈哈</em>");
$("#box").append(obj);
var $p = $("p");
$p.html("xxxx"); //改变所有p标签
二、jq和js的相互转换
js转jq
var oBox = document.getElementById("box");
$(oBox).html("xxxxx"); //加$() 把js对象转为jq对象,调用jq的接口
jq转js
var $p = $("#box p");
$p.html("666"); //jq正常规范使用
$p[0].innerHTML = "666"; //把jq对象转为js对象,调用js的接口
$p.get(1).innerHTML = "777"; //把jq对象转为js对象,调用js的接口
jq转特定的jq
var $p = $("#box p");
$p.eq(1).html("88"); //eq(i)相当于jq加下标,调用特定的jq对象
三、jq的遍历
$("#box p").each(function(n){ //第一个参数默认遍历的序号,n就是p标签下标
this.innerHTML = "555";
$(this).html("我是" + n + n + n)
});
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <div id="box"> <p>1</p> <p>2</p> <p>3</p> <p>4</p> </div> <script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.js"></script> <script> $("#box p").each(function (n) { $(this).html("我是"+n+n+n+n); }); </script> </body> </html>
演示结果:
四、操作属性
attr 设置/获取 标签属性
prop 设置/获取 标签属性 废除
removeAttr 移除标签属性
removeProp 废除属性
var $box = $("#box");
alert($box.attr("class"));//读操作
$box.attr("class","zidingyi");
$box.attr("tz","py");
$box.removeAttr("class");
addClass 如果没有设置class如果有就添加class 例:class = "aa bb";两个class以空格隔开
removeClass 如果没有值,清除所有class的值,class属性还在,如果传入classname,则删除该classname
toggleClass 有值则删除,没有则添加(操作classname)
var $p = $("#box p");
$p.addClass("bb cc vv");
$p.removeClass();
$p.removeClass("bb");
$p.toggleClass("on");
在jq里,如果没有设置下标,设置某个值的时候,一般自带遍历(设置所有);获取某个值的时候,一般获取第一个
jq js
html() innerHTML
text() innerText
val() value
五、操作样式
添加一个样式
$("#box").css("height","300px");
.width()
.height()
添加多个样式
$("#box").css({
height: "300px"
"100px"
});
添加的样式,左边的key可以不加双引号,右边的value必须添加双引号
innerWidth() / innerHeight //算了padding
outerWidth() / outerHeight //算了 padding+border
$("#box").outerWidth();
$("#box").offset().top; //到浏览器窗口上边的距离
$("#box").offset().left; //到浏览器窗口左边的距离
$("#box").position().top; //到父级元素上边的距离
$("#box").position().left; //到父级元素左边的距离
box的边框图: box1的边框图:
打印他们的部分属性:
六、scroll
scrollTop() 如果有值,设置滚动条高度,没有值,则获取滚动条高度
scrollLeft() 如果有值,设置滚动条宽度,没有值,则获取滚动条宽度
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body style=" 1000px;height: 2000px"> <script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.js"></script> <script> $(document).click(function () { console.log("滚动高度" + $(this).scrollTop()); console.log("滚动宽度" + $(this).scrollLeft()); }); $(document).click(function () { $(this).scrollTop(1000); $(this).scrollLeft(500); }); </script> </body> </html>
七、append
添加子元素,可以是标签,文本,js对象,jq对象
append 添加在子元素列表末尾
prepend 添加在子元素列表开头
获取到的子元素,添加后,原来的被消除。
var oB = document.getElementsByTagName("b")
$("#box").append(oB);
$("#box").append($(oB));
appendTo 添加在子元素列表末尾,作用同append,写法不同
prependTo 添加在子元素列表开头
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <div id="box"> <p>我是已经存在的</p> </div> <b>我是在外面的</b> <script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.js"></script> <script> /* 添加子元素 可以是标签、文本、js对象、jq对象 append prepend appendTo prependTo */ $("#box").append("<em>来打我呀1</em>"); $("#box").prepend("<em>来打我呀2</em>"); $("#box").append("来打我呀3"); // var oB = document.getElementsByTagName("b"); // $("#box").append(oB); // $("#box").append( $(oB)); $("<em>hahah</em>").appendTo($("#box")); </script> </body> </html>
结果:
看页面布局:
八、before after
添加兄弟元素,下面两对效果相同,使用方式不一样
after/before
insertAfter/insertBefore
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <div id="box">111</div> <script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.js"></script> <script> /* 添加兄弟元素 after before insertAfter insertBefore */ $("#box").before("<b>我是before</b>"); $("#box").after("<b>我是after</b>"); $("<b>我是insertAfter</b>").insertAfter($("#box")); $("<b>我是Before</b>").insertBefore($("#box")); </script> </body> </html>
结果:
九、wrap
wrap 给每个元素添加一个父元素
unwrap 删除元素的父元素
wrapAll 给所有子元素添加一个父元素,该父元素包起来所有子元素
wrapInner 给该标签的内容添加一个标签
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <div id="box"> <p>001</p> <p>002</p> <p>003</p> </div> <script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.js"></script> <script> /* wrap 给每个元素添加一个父元素 unwrap 删除元素的父元素 wrapAll 给子元素添加一个父元素都包起来 wrapInner */ $("#box p").wrap("<div></div>"); $("#box p").unwrap(); $("#box p").wrapAll("<div></div>"); $("#box p").wrapInner("<em></em>"); </script> </body> </html>
看运行后的结构:
十、empty
empty 清空子节点
remove 移除自己(不保留数据和事件)
detach 移除自己(保留数据和事件)
三个效果对比
十一、筛选
eq 寻找一组里的元素坐标 $("body").find("div").eq(2).addClass("blue");
hasClass 检查当前的元素是否含有某个特定的类,如果有,则返回true。否则返回false
children 找儿子 可以不传参数
find 不传参,默认不找 传参的话就找符合参数的后代
parent
parents (".show")找到名字叫做show的祖先
siblings 不传参 对所有兄弟有效 传参 所有兄弟按照参数筛选出合格的
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> * { margin: 0; padding: 0; } </style> </head> <body> <div id="box" class="show"> <p>1</p> <p class="box">2</p> <div> <p>3</p> <p>4</p> </div> </div> <script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.js"></script> <script> /* eq 寻找一组里的元素坐标 $("body").find("div").eq(2).addClass("blue"); hasClass 检查当前的元素是否含有某个特定的类,如果有,则返回true。否则返回false children 找儿子 可以不传参数 find 不传参,默认不找 传参的话就找符合参数的后代 parent 不需要参数 parents(".show")找到名字叫做show的祖先 siblings 不传参 所有兄弟 传参 所有兄弟按照参数筛选出合格的 */ console.log($("p").hasClass("box1"));//false console.log($("p").hasClass("box"));//true*/ console.log($("#box").children()); console.log($("#box").children("p")); console.log($("#box").find("p")); console.log($(".box").parent());//只找一个 找爸爸 console.log($(".box").parents());//找所有的祖先 console.log($(".box").parents(".show")); //$("p").siblings().css("color","red"); $("p").siblings(".box").css("color","red"); </script> </body> </html>
结果:
$("p").siblings(".box").css("color","red");效果:
十二、事件
都是函数形式的,去掉on的那种
此方式与js不同,不会存在覆盖的情况
$("#box").click(function(){
alert(111);
});
jq事件绑定,解绑
on绑定单个事件
$("#box").on("click", "li", function(){
alert($(this).index()); //index()在jq里是方法,对应下标
});
on绑定多个事件
$("#box").on({
"click1":fn,
"click2":function(){
},
"click3":function(){
},
});
function fn(){
}
移除事件
$("#box").off("click1"); //移除单个事件
$("#box").off(); //移除该标签全部事件
hover 移入,移出 如果hover方法里只有一个函数,就默认移入和移出都响应;要是有两个,前面的默认移入,后边的默认移出方法
$("#box").hover(function(){
},function(){
}
);
十三、动画
show 显示 不传参数,直接显示,传参数(整数毫秒)时间渐渐显示(逐渐放大,透明度加深逐渐显示)
hide 隐藏 不传参数,直接隐藏,传参数(整数毫秒)时间渐渐隐藏(逐渐缩小,透明度变浅逐渐消失)
fadeIn 显示 淡入淡出 传参数(整数毫秒)控制淡入淡出的时间
fadeOut 隐藏 淡入淡出
fadeTo 两个参数,第一个时间(整数毫秒),表示变化时间快慢,第二个表示变化的透明度
slideDown 从上向下显示
slideUp 从下向上隐藏
toggle
slideToggle