方便、快捷、插件丰富
一、jQuery 选择器
1. 标签选择器
$("tagName"); // 引号里面是标签名,例:div
2. 类(class)选择器
$(".className"); // 引号里面是类名,例:.box
3. id 选择器
$("#idName"); // 引号里面是id名,例:#box
4. 通配符
$("*"); // 引号里面是*,表示所有元素
5. 交集选择器
$("#idName.className"); // 两个元素之间没有空格
// ""里面可以是,标签名/类名/id名等,例:div.box 表示既是一个div,又满足class名为box的元素
6. 后代选择器
$("#idName .className"); // 两个元素有空格
// ""里面可以是,标签名/类名/id名等,例:#box .boxChild 表示boxChild元素是box元素的子级
【注】$ 是一个函数;返回结果是jQuery 内部的对象;
二、路径内容补充
js/jquery-3.2.2.js --> 相对于当前HTML文件来说
../ --> 当前HTML文件的上一级目录
./ --> 代表当前HTML文件所在目录
/ --> 代表服务器根目录
例: 在HBuilder服务器中: http://127.0.0.1:8020是根目录;
在Nginx服务器中,nginx-1.10.3\html是根目录
三、css 访问匹配元素的样式属性
// {"color": "red"},是css样式参数,是一个JSON对象
$("div").css({"color": "red","backgorund-color": "plum"});
// 也可以不加引号
$("div").css({color: "red"});
// 必须加引号
$("div").css("color", "red");
// 可以得到元素的样式值
var a = $("div").css("color");
console.log(a); // 结果为div的color样式值,如果找到多个元素,则返回第一个元素的值
四、关于有序号的元素获取
1. $("p"); // 所有的p标签
2. $("p:first"); // 第一个p标签
3. $("p:last"); // 最后一个p标签
4. $("p:eq(3)"); // 下标为3的p标签 或 $("p").eq(3);
5. $("p:lt(3)"); // 下标小于3的p标签
6. $("p:gt(3)"); // 下标大于3的p标签
7. $("p:odd"); // 下标为奇数的p标签
8. $("p:even"); // 下标为偶数的p标签
五、加载完成后执行(当js写在head里面时,使用)
// 代表DOM元素都加载完毕之后,执行
1. $(document).ready(function(){
$("div").css("color","red");
});
// 1的简写版,效果相同
2. $(function(){
$("div").css("color","red");
});
// 原生JS中书写形式
3. window.onload = function(){
$("div").css("color","red");
}
【注】document 和 window 对象加载的区别:document 是表示DOM元素都加载完毕之后执行js代码;而window 是表示DOM元素、图片资源都加载完成后执行js代码;一般使用document加载就可以了。
六、鼠标移入、移出事件
jQuery 中的事件 比 原生JS中少了on
mouseover 和 mouseenter 鼠标移入事件:
$("div").mouseover(function(){
console.log("鼠标移入了");
});
$("div").mouseenter(function(){
console.log("鼠标移入了");
});
mouseout 和 mouseleave 鼠标移出事件
$("div").mouseout(function(){
console.log("鼠标移出了");
});
$("div").mouseleave(function(){
console.log("鼠标移出了");
});
【注】:mouseover(mouseout) 和mouseenter (mouseleave)的区别:mouseover (mouseout)事件会冒泡;mouseenter (mouseleave)事件不会冒泡;
七、事件的链式调用
隐藏(hide) 和 显示(show)事件
1. 隐藏事件:
$("div").hide(speed,easing,fn);
2. 显示事件:
$("div").show(speed,easing,fn);
3. 链式调用(原理:因为这些方法默认返回的是jQuery对象)
$("div").hide(1000).show(1000); // 表示先隐藏在显示
【注】显示、隐藏事件的参数:speed - 代表执行事件的速度,有三种速度字符串("slow"(慢),"normal"(正常),"fast"(快))也可以用执行时间的毫秒数值来表示(例:1000);easing - 表示变化效果,默认为“swing”,可用参数为“linear”,如果想要其他变化样式,需要引入jQuery插件;fn - 动画执行完成之后执行的回调函数,每个元素执行一次。
八、动画(animate)引用
如果引用其他运动样式,则需要在引用jQuery文件之后再引入jQuery插件(插件必须在jQuery文件之后引入)
$(div).animate({"left": 1000},1000); // 把div向右移动到1000px 的位置,执行事件为1000毫秒
// 先把div 移动到1000px的位置,在执行回调函数,将div 移动到0px的位置
$("div").animate({"left": 1000},1000,function(){
$(this).animate({"left": 0},1000);
});
// 同一个物体,执行两个动画,会先执行第一个,之后再执行第二个
$("div").animate({"left": 1000,"top": 400},1000);
$("div").animate({"left": 0,"top": 400},1000);
// 不同的物体,执行两个动画。会同时执行,互不干扰
$("#box").animate({"left": 1000,"top": 400},1000);
$("#box1").animate({"left": 0,"top": 400},1000);
// 默认执行"linear" 和 "swing"两种动画,如果需要,可以引入插件
$("#box").animate({"left":1000},1000,"easeInOutExpo",function(){});
【注】this 谁调用就是谁,这里this值这个div元素;实现原理:animate 函数内部做了对象冒充,用物体元素代替了回调函数中的this;通过$( this ) 将this 转换为jQuery 对象。
九、鼠标滚动,页面侧边栏跟着滚动
思路: 1. 绑定滚动事件;2. 滚动事件处理函数中(调整广告栏移动,到滚动位置);
// 设置 鼠标滚动事件
$(document).scroll(function(){
// 得到滚动的高度
var y = $(document).scrollTop();
// 让div 跟着移动到页面滚动的高度(+300,是为了让div在页面中间,可以更改)
$("div").stop(true).animate({"top": 300+y},1000); // 只执行当前滚动事件,其余停止
});
【注】stop( true ) 动画执行停止,true表示清除之前的动画执行队列,