jQuery是一个快速简洁的JavaScript库,它封装了JavaScript常用的功能代码。学习jQuery本质就是学习调用这些方法。
jquery的入口函数,相当于原生js中的DOMContentLoaded。等着页面DOM加载完毕再去执行js代码。
第一种:
$(document).ready(function(){
$('div').hide();
})
第二种:
$(function () {
$('div').hide();
})
符 号 是 j Q u e r y 的 别 称 , 在 代 码 中 可 以 使 用 j Q u e r y 代 替 符号是jQuery的别称,在代码中可以使用jQuery代替 符号是jQuery的别称,在代码中可以使用jQuery代替,但一般为了方便,使用$。
$符号也是jQuery的顶级对象,相当于原生js中的window。
// 1) 获取jQuery对象
$('video');
// 2) 获取DOM对象
var myvideo = document.querySelector('video');
// 3) 转换:直接用$包装DOM对象
$('myvideo')
// 1) 第一种
$('video')[0].play();
// 2) 第二种
$('video').get(0).play();
名称 | 语法 |
---|---|
ID选择器 | $("#id") |
全选选择器 | $(’*’) |
类选择器 | $(".class") |
标签选择器 | $(“div”) |
并集选择器 | $(“div,p,li”) |
交集选择器 | $(“li.current”) |
名称 | 语法 | 描述 |
---|---|---|
子代选择器 | $(“ul>li”) | 获取亲儿子元素 |
后代选择器 | $(“ul li”) | 获取所有子代li元素 |
语法 | 用法 | 描述 |
---|---|---|
:first | $(“li:first”) | 获取第一个li元素 |
:last | $(“li:last”) | 获取最后一个li元素 |
:eq(index) | $(“li:eq(2)”) | 索引号为2的元素,索引从0开始 |
:odd | $(“li:odd”) | 索引号为奇数的元素 |
:even | $(“li:even”) | 索引号为偶数的元素 |
语法 | 用法 | 描述 |
---|---|---|
parent() | $(“li”).parent(); | 最近一级的父元素 |
children(selector) | $(“ul”).children(“li”) | 相当于$(“ul>li”),最近一级子元素 |
find(selector) | $(“ul”).find(“li”) | 相当于$(“ul li”),后代选择器 |
siblings(selector) | $(".first").siblings(“li”) | 查找兄弟节点,不包括自己本身 |
nextAll([expr]) | $(".first").nextAll() | 查找当前元素之后所有的同辈元素 |
prevtAll([expr]) | $(".first").prevtAll() | 查找当前元素之前所有的同辈元素 |
hasClass(class) | $(‘div’).hasClass(“protected”) | 检查当前的元素是否含有某个特定的类,如果有则返回true |
eq(index) | $(“li”).eq(2) | 相当于$(“li:eq(2)”),index从0开始 |
$(function () {
// 1. 隐式迭代给所有按钮绑定点击事件
$("button").click(function () {
// 2. 当前元素变化背景颜色
$(this).css("background", "pink");
// 3. 其余的兄弟去掉背景颜色,隐式迭代
$(this).siblings("button").css("background", "");
})
})
上面改变按钮背景颜色的案例,代码可以简写为:
$(this).css("background", "pink").siblings("button").css("background", "");
参数值写属性名,则返回属性值;
$(this).css("color");
参数写属性名,属性值,逗号分隔。属性必须加引号,属性值如果是数字可以不用跟单位和引号。
$(this).css("color","red");
参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号分隔,属性可以不加引号但是要用驼峰命名法。
$(this).css("color":"red",
"font-size":"20px",
backgroundColor:"blue");
引号里面的类名不要加点。
添加类addClass
$(this).addClass("current");
删除类removeClass
$(this).removeClass("current");
切换类toggleClass
$(this).toggleClass("current");
类操作与className区别
显示语法
show([speed,[easing],[fn]])
隐藏语法
hide([speed,[easing],[fn]])
切换语法
toggle([speed,[easing],[fn]])
参数
下拉语法
slideDown([speed,[easing],[fn]])
上拉语法
slideUp([speed,[easing],[fn]])
切换语法
slideToggle([speed,[easing],[fn]])
参数
第一个参数是鼠标经过触发的事件函数,第二个参数是鼠标离开触发的事件函数。
hover(mouseoverFunction(),outFunction())
滑动下拉菜单案例
两个参数版:
$(".nav>li").hover(function () {
$(this).children('ul').slideDown(200);
}, function () {
$(this).children('ul').slideUp
});
只写一个参数,鼠标经过和鼠标离开都会触发这个函数:
$(".nav>li").hover(function () {
$(this).children('ul').slideToggle(200);
})
stop()方法必须写在动画的前面。
$(this).children('ul').stop().slideToggle(200);
淡入语法
fadeIn([speed,[easing],[fn]])
淡出语法
fadeOut([speed,[easing],[fn]])
淡入淡出切换语法
fadeToggle([speed,[easing],[fn]])
渐进方式调整到指定的不透明度
opacity:透明度,速度属性和透明度属性必须写。
fadeTo(speed,opacity,[easing],[fn])
参数
突出显示案例
$(function () {
$(".wrap div").hover(function () {
$(this).siblings().stop().fadeTo(400, 0.5);
},
function () {
$(this).siblings().stop().fadeTo(400, 1);
})
})
语法
animate(params,[speed],[easing],[fn])
参数
例:
$(function () {
$("button").click(function () {
$("div").animate({
left: 800,
bottom: 300,
opacity: .5,
width: 400,
height: 300
})
})
})
获取属性语法:
prop("属性")
设置属性语法:
prop("属性":"属性值")
获取属性语法:
attr("属性")
类似于原生js里面的getAtrribute()
设置属性语法:
attr("属性":"属性值")
类似于原生js里面的setAtrribute()
data()方法可以在指定的元素上存取数据,并不会修改DOM元素结构。一旦页面刷新,之前存放的数据都将被移除。
附加数据语法
data("name","value")
获取数据语法
data("name")
同时,还可以读取html5自定义属性data-index,得到的是数字型。
$(function () {
$(".a-checkbox").change(function () {
// console.log($(".a-checkbox").prop("checked"));
$(".j-checkbox").prop("checked", $(this).prop("checked"));
});
$(".j-checkbox").change(function () {
if ($(".j-checkbox:checked").length === $(".j-checkbox").length) {
$(".a-checkbox").prop("checked", true);
} else {
$(".a-checkbox").prop("checked", false);
}
})
})
主要是遍历、创建、添加、删除元素操作。
$("div").each(function(index,domEle) {xxx;})
$.each(arr,function(index,ele))
内部添加后二者是父子关系。
element.append("元素")
element.prepend("元素")
append将元素放在内容的最后面,prepend将元素放在内容的前面。
外部添加后二者关系是兄弟关系。
element.after("内容")
element.before("内容")
after将元素放在内容的最后面,before将元素放在内容的前面。
element.remove()
可以删除匹配的元素,自杀。
element.clear()
可以删除匹配的元素的子节点。相当于element.html("")。
参数可以不加单位。
方法 | 描述 |
---|---|
width()/height() | 取得匹配元素宽度和高度值,只算width/height |
innerWidth()/innerHeight() | 取得匹配元素宽度和高度值 包含padding |
outerWidth()/outerHeight() | 取得匹配元素宽度和高度值 包含padding和border |
outerWidth(true)/outerHeight(true) | 取得匹配元素宽度和高度值 包含padding、border和margin |
设置或获取元素偏移。offset()方法设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系。它有两个属性,left和top。
获取距离带有定位父级位置,如果没有带有定位的父级,则以文档为准。该方法只能获取不能设置。
获取文档被卷曲的头部的距离,还可以带参数设置文档被卷曲头部的距离。参数不加单位。
在animate方法中也有scrollTop方法,用来元素做去往页面某一位置的动画。
element.click(function() { })
on()方法优势1:on() 方法在匹配元素上绑定一个或多个事件的事件处理函数。
element.on({
click:function() {
},
mouseover:function() {
}
})
如果事件的事件处理函数做同样的操作,可以简写为:
element.on("mouseover mouseout",function(){
})
on()方法优势2:可以事件委派操作。事件委派的定义是,把原来加给子元素身上的事件绑定在父元素身上,就是把事件委派给父元素。
$("ul").on("click","li",function() {
// click 是绑定在ul身上的,但是触发的对象是ul里面的小li
})
on()方法优势3:on()方法可以给动态创建的元素绑定事件。
// $("ol li").click(function(){
// alert(11); // 传统绑定事件点击动态创建的li不会弹出弹框
// })
$("ol").on("click", "li", function(){
alert(11); // on()方法绑定事件点击动态创建的li可以弹出弹框
})
var li = $("我是后来创建的 ")
$("ol").append(li);
off()方法用来解绑事件。
不跟参数代表解绑element身上的所有事件。
element.off()
加参数代表解绑特定事件。
element.off("click")
解绑事件委托
$("ul").off("click","li");
如果有的事件只想触发一次,可以使用one()来绑定事件。
前提是已经为元素绑定了事件。
第一种:
$("div").click();
第二种:
$("div").trigger("事件");
第三种:triggerHandle() 不会触发元素的默认行为,比如说文本框的光标闪烁。
$("div").triggerHandle("事件")
事件被触发就会有事件对象产生。
element.on(events,[selector],function(event) { })
阻止默认行为:event.preventDefault() 或者 return false;
阻止冒泡:event.stopPropagation();
如果想要把某个对象拷贝(合并)给另外一个对象使用。可以使用$.extend()方法。有冲突会覆盖原来数据。
$.extend([deep], target, obj1, [objN])
jQuery使用 作 为 标 识 符 , 随 着 j Q u e r y 的 流 行 , 其 他 j s 库 也 会 用 作为标识符,随着jQuery的流行,其他js库也会用 作为标识符,随着jQuery的流行,其他js库也会用作为标识符,这样一起使用会引起冲突。让jQuery和其他js库不存在冲突,叫做多库共存。
解决方案:
把里面的$符号统一改成jQuery。比如jQuery(“div”)。
用户自己定义,让jQuery释放对$控制权。
var mine = jQuery.noConflict();
就可以使用mine(“div”)代替$(“div”)了。
使用jQuery插件之前必须先引入jQuery文件
jQuery插件库:http://www.jq22.com/
(推荐)jQuery之家:http://www.hymleaf.com/
使用方法:
查看演示——下载插件——打开解压后的index.html——将css和js文件夹复制到自己的文件夹中——引入文档中的css文件和js文件——复制html文件中的结构——换成自己的图片和内容——根据插件说明更改自己想调的参数
图片懒加载的意思是:当我们页面滑动到可视区域,再显示图片。图片使用延迟加载可以提高网页下载速度,也可以减轻服务器负载。
实现方法:
网址:www.dowebok.com/demo/2014/77/
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documenttitle>
<link rel="stylesheet" href="css/todolist.css">
<script src="js/jquery.min.js">script>
<script src="js/todolist.js">script>
head>
<body>
<header>
<section>
<label for="title">ToDoListlabel>
<input type="text" id="title" name="title" placeholder="添加ToDo" required>
section>
header>
<section>
<h2>正在进行 <span id="todocount">span>h2>
<ol id="todolist" class="demo-box">
ol>
<h2>已经完成 <span id="donecount">span>h2>
<ul id="donelist">
ul>
section>
<footer>
Copyright © 2014 todolist.cn
footer>
body>
html>
* {
margin: 0;
padding: 0;
}
body {
background-color: rgba(255, 133, 154, 0.897);
}
section ,
footer {
width: 600px;
margin: 0 auto;
}
header {
height: 40px;
background-color: palevioletred;
}
header label {
height: 40px;
float: left;
color: white;
line-height: 40px;
font-size: 18px;
}
header input {
float: right;
height: 24px;
width: 300px;
margin-top: 7px;
border-radius: 5px;
border: 0;
padding-left: 5px;
}
h2 {
position: relative;
margin: 15px 0;
color: white;
}
ol,
ul {
list-style: none;
}
.demo-box {
width: 100%;
}
li {
height: 30px;
background-color: palevioletred;
border-bottom: 1px solid #fff;
margin-top: 5px;
}
li input,
li p {
float: left;
height: 30px;
line-height: 30px;
margin-left: 10px;
color: white;
}
#donelist li input,
#donelist li p {
color: #666;
text-decoration: line-through;
}
footer {
margin-top: 20px;
/* position: absolute;
bottom: 10px;
left: 340px; */
font-size: 14px;
color: #666;
text-align: center;
}
a {
height: 30px;
line-height: 30px;
text-decoration: none;
color: #fff;
float: right;
margin-right: 20px;
font-size: 12px;
}
input[type="checkbox"]:checked {
background-color: #fff;
}
#todocount,
#donecount {
position: absolute;
right: 5px;
width: 20px;
height: 30px;
background-color: pink;
font-size: 14px;
color: white;
line-height: 30px;
text-align: center;
border-radius: 5px;
}
$(function () {
load();
// 按下回车:把完整数据存储到本地存储里面
$("#title").on("keydown", function (event) {
if (event.keyCode === 13) {
// 先读取本地存储原来的数据
var local = getData();
// 把最新的数据追加给local数组
local.push({ title: $(this).val(), done: false });
// 把这个数组存储到本地存储
saveData(local);
load();
$(this).val("添加ToDo");
}
})
// 2. 获取本地存储的数据我们需要把里面的字符串数据转换为对象格式:JSON.parse()
function getData() {
var data = localStorage.getItem("todolist");
if (data !== null) {
return JSON.parse(data);
} else {
return [];
}
}
// 保存本地存储数据
function saveData(data) {
// 1. 本地存储里面只能存储字符串数据格式,要把数组对象转换为字符串格式:JSON.stringify()
localStorage.setItem("todolist", JSON.stringify(data));
}
// 渲染加载页面
function load() {
// 读取本地存储的数据
var data = getData();
// 每次加载前清空ol里的内容
$("ol,ul").empty();
// 统计个数
var todoCount = 0;
var doneCount = 0;
// 遍历这个数据
$.each(data, function (i, n) {
if (n.done === false) {
$("ol").prepend("+ i + "> "
+ n.title + " + i + ">× ");
todoCount++;
} else {
$("ul").prepend("+ i + "> "
+ n.title + " + i + ">× ");
doneCount++;
}
});
$("#todocount").text(todoCount);
$("#donecount").text(doneCount);
}
// 删除操作
$("ol,ul").on("click", "a", function () {
var data = getData();
// id是自定义属性,用来设置索引号
var index = $(this).attr("id");
// 没有办法直接把本地存储中的数据删掉,我们将得到的数据进行修改,然后再将该元素重新存到本地存储中
// splice(index,n)用于删除数组中元素
data.splice(index, 1);
saveData(data);
load();
})
// 正在进行和已完成操作
$("ul,ol").on("click", "input", function () {
// 点击之后获取本地存储数据
var data = getData();
var index = $(this).attr("id");
// 修改done属性
data[index].done = $(this).prop("checked");
saveData(data);
load();
})
})