jQuery是一个快速、简介的JavaScript库,宗旨是“write less,do more”。
官网:https://jquery.com
版本:
1x:兼容IE6、7、8,不再更新
2x:不兼容IE6、7、8,不再更新
3x:不兼容IE6、7、8,当前官网主要更新版本
1、入口函数
$(function(){ }); // $(document).ready(function(){ });
= js:DOMContentLoaded //不必等待外部文件加载(js,css,图片…)
2、jQuery和DOM对象转换
2.1DOM转jQuery
<video src=‘xxx.mp4’ >
1)$(‘video’)
2)var myVideo = document.querySelector(‘video’);
$(myVideo);
2.2 jQuery转DOM
1)$(‘div’)[index]
2)$(‘div’).get(index)
3、选择器
- ID选择器:$("#id")
- 类选择器:$(".class")
- 标签选择器:$(“div”)
- 全选:$("*")
- 并集选择器:$(“div,ul,li”)
- 交集选择器:$(“li.current”)
- 子代选择器:$(“ul>li”)
- 后代选择器:$(“ul li”)
4、隐式迭代 ※
遍历内部DOM元素的过程,也称内部遍历。伪数组形式存储。
eg:$(“ul li”).css(“color”,“red”);
5、筛选选择器
- $(“li:first”); //获取第一个li
- $(“li:last”); //获取最后一个li
- $(“li:eq(2)”); //获取到的li元素中,索引号为2的元素,index从0开始
- $(“li:odd”); //索引号为奇数
- $(“li:even”); //索引号为偶数
6、筛选方法 ※
- $(“li”).parent(); //找父级
- $(“ul”).children(“li”); //亲儿子 ul>li
- $(“ul”).find(“li”); // 所有孩子,包括儿子和孙子,后代选择器
- $(".first").sibling(“li”); //兄弟元素
- $(".first").nextAll(); //兄弟元素
- $(".last").preAll(); //兄弟元素
- $(“div”).hasClass(“pretected”); //当前元素是否含有某个特定的类,有则为true
- $(“li”).eq(2); //等价于 $(“li:eq(2)”);
7、排他思想
自己变,兄弟不变。
eg$(“button”).click(function(){
$(this).css(“background”,“pink”);
$(this).siblings(“button”).css(“background”,"");
}):
⇒$(this).css(“color”,“red”).siblings().css(“color”,""); //链式编程
8、操作CSS
8.1获取
$(“this”).css(“color”);
8.2设置
- $(“this”).css(“color”,“red”);
- $(“this”).css({“color”,“red”,“font-size”:“20px”});
- $(“div”).addClass(“current”); //.current{} ,不覆盖,只追加
- $(“div”).removeClass(“current”);
- $(“div”).toggleClass(“current”); //切换类
9、操作属性
9.1元素固有属性 prop()
eg:
$(“a”).prop(“href”); //获取
$(“a”).prop(“属性”,“属性值”); //设置
9.2元素自定义属性 attr()
eg:
$(“div”).attr(“index”,4);
9.3元素自定义属性 data()
指定元素上存取数据,不修改DOM结构,页面刷新之后,数据被移除。
eg:
$(“span”).data("“uname”,“andy”);
<div data-index=“1”> ⇒ $(“div”).data(“index”)
10、操作节点
10.1创建
$("<li></li>")
10.2添加
1)内部添加
①element.append(“内容”); //放在最后,类似于appendChild
②element.prepend(“内容”); //放在最前
2)外部添加
①element.after(“内容”); //目标元素后面
②element.before(“内容”); //目标元素前面
10.3删除
1)element.remove(); //删除匹配的元素(本身)
2)element.empty(); //删除匹配的元素的子节点
3)element.html(); //删除匹配的元素的子节点
10.4遍历
语法1:
$(“div”).each(function(index,domEle){ xxx })
语法2:
$.each(object,function(index,domEle){ xxx }) //处理数据 ※
11、内容
<div> <span>内容</span></div>
11.1 html()
等同于innerHTML
$(“div”).html(); //获取内容 ⇒ <span>内容</span>
$(“div”).html(“123”); //设置内容 ⇒ <div>123</div>
11.2 text()
等同于innerText
$(“div”).text(); //获取文本 ⇒ 内容
$(“div”).text(“123”); //设置文本 ⇒ <div>123</div>
11.3 val()
等同于value
$(“input”).val(); //获取标签value
$(“input”).val(“123”); //设置标签value
12、效果
12.1显示隐藏
show()、hide()、toggle()
12.2滑动
slideDown()、slideUp()、slideToggle()
12.3淡入淡出
fadeIn()、fadeOut()、fadeToggle()、fadeTo()
12.4自定义动画
animate()
13、尺寸
- width()、height() //只算width、height
- innerWidth()、innerHeight(); //含padding
- outerWidth()、outerHeight(); //含padding+border
- outerWidth(true)、outerHeight(true); //含padding+border+margin
14、位置
14.1 offset
相对于文档的便宜坐标,与父级无关。
$(".son").offset().top
$(".son").offset().left
14.2 positon
相对于带有定位的父级偏移坐标,若无父级元素,则以文档为准。
14.3scrollTop()、scrollLeft()
被卷去的头部和左侧。
15、事件
15.1单事件注册
语法:element.事件(function(){ });
事件:mouseover、mouseout、blur、focus、change、keydown、keyup、reszie、scroll
15.2 on一个或多个时间绑定
1)on({ })
$(“div”).on({
omuseenter:function(){ },
click:function(){ }
});
※不同事件,相同函数,简写:$(“div”).on(“mouseenter mouseleave”,function(){ })
2)时间委托
原本在子元素身上的时间,添加到父级元素身上。
$(“ul”).on(“click”,“li”,function(){ }) //老方法:bind、live、delegate…
3)on可以给未来动态创建的元素绑定事件
传统做法:$(“ol li”).click(function(){ });
var li = $("<li>新li</li>");
$(“ol”).append(li);
该方法之后,动态追加的li不具备click事件。
$(“ol”).on(“click”,“li”,function(){ }); //on没有上诉问题 ※
15.3 off解绑事件
1)
(
"
d
i
v
"
)
.
o
f
f
(
)
;
/
/
解
绑
所
有
事
件
2
)
("div").off(); // 解绑所有事件 2)
("div").off();//解绑所有事件2)(“div”).off(“click”); // 解绑指定事件
3)$(“div”).off(“click”,“li”);; // 解绑事件委托
15.4 one() 只触发一次的事件
$(“p”).one(“click”,function(){ });
15.5 trigger() 自动触发
1)$(“div”).click(); //自动调用(加载时)
2)$(“div”).trigger(“click”);
3)$(“div”).triggerHandler(“click”); //不会触发默认行为,如获取焦点时的光标闪烁
15.5 event() 事件对象
function(event){}
用处:
1)阻止默认行为,event.preventDefault() 或 return false;
2)阻止冒泡:event.stopPropagation()
16、对象拷贝 $.extend()
语法:$.extend([deep],targer,object1,[object])
1)deep:true为深拷贝,默认为false,浅拷贝对复杂对象只拷贝地址,若对象被修改,会有影响 ※
2)target:目标
3)objedt1:待拷贝对象
17、jQuery多库共存
1)把
统
一
改
为
j
Q
u
e
r
y
e
g
:
j
Q
u
e
r
y
(
"
d
i
v
"
)
;
2
)
统一改为jQuery eg:jQuery("div"); 2)
统一改为jQueryeg:jQuery("div");2).noConflict()
var xx = $.noConfict(); ⇒ xx(“div”);
18、jQuery插件
前提:先引入jQuery.js文件。
1)jQuery之家: http://www.htmleaf.com/ (推荐)
2)jQuery插件库:http://www.jq22.com/