扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
jQuery是一个实用的JavaScript函数库,jQuery极大地简化了JS对DOM的操作,封装并实现的一系列常用的方法。
10年积累的网站建设、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有揭阳免费网站建设让你可以放心的选择与我们合作。
jQuery库封装了JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
其实除了jQuery,还有许许多多的开源好用的JavaScript库,只不过jQuery较为流行,使用广泛所以要着重了解和学习
jQuery的选择机制构建于Css的选择器,它提供了快速查询DOM文档中元素的能力,而且大大强化了JavaScript中获取页面元素的方式。
jQuery中内置了一系列的动画效果,可以开发出非常漂亮的网页,许多网站都使用jQuery的内置的效果,比如淡入淡出、元素移除等动态特效。
AJAX是异步的JavaScript和XML的简称,可以开发出非常灵敏无刷新的网页,特别是开发服务器端网页时,比如PHP网站,需要往返地与服务器通信,如果不使用AJAX,每次数据更新不得不重新刷新网页,而使用AJAX特效后,可以对页面进行局部刷新,提供动态的效果。
jQuery提供了对基本JavaScript结构的增强,比如元素迭代和数组处理等操作。
jQuery提供了各种页面事件,它可以避免程序员在HTML中添加太多事件处理代码,最重要的是,它的事件处理器消除了各种浏览器兼容性问题。
jQuery可以修改网页中的内容,比如更改网页的文本、插入或者翻转网页图像,jQuery简化了原本使用JavaScript代码需要处理的方式。
上文提到jQuery是一个实用的JavaScript函数库,那么引入jQuery就和引入一个JavaScript文件的方式相同,通常是外部引入
jQuery文件可以从jQuery的官网下载或者其他第三方网站下载到不同的版本,引入到HTML页面后即可使用
jQuery的基本设计和主要用法,就是"选择某个网页元素,然后对其进行某种操作"
jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作
基础语法: $(selector).action()
等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部
资源加载完成,jQuery帮我们完成了封装。
第一种方法
$(document).ready(function(){
...//此处是页面DOM加载完成的入口
});
第二种方法
$(function(){
...//此处是页面DOM加载完成的入口
});
$是jQuery的另外一个名称
$(function(){
alert(111)
})//alert(111)
jQuery(function(){
alert(111)
})
$是jQuery中的顶级对象(可以把元素包装成我们的jQuery对象)
$('div').hide();
DOM对象:用原生js获取过来的对象就是DOM对象
var myDiv=document.querySelector('div');
jQuery对象:用jquery方式获取过来的对象是jQuery对象。本质:通过$符把元素进行了封装
$('div');
jQuery对象只能使用jQuery方法,DOM对象则使用原生的JavaScript方法和属性
两者之间可以相互转换
DOM对象转换为jQuery对象
直接获取div,得到的就是jQuery对象
$('div');
已经使用原生的js获取过来DOM
var myDiv=document.querySelector('div');
$(myDiv);
jQuery对象转换为DOM对象
$('div')[0].function();
$('div').get(0).function();
$("选择器") //里面选择器直接写CSS选择器即可,要加引号
名称 | 用法 | 描述 |
---|---|---|
ID选择器 | $("#id") | 获取指定id的元素 |
全选选择器 | $("*") | 匹配所有的元素 |
类选择器 | $(".class") | 获取同一类class的元素 |
标签选择器 | $("div") | 获取同一标签的所有元素 |
并集选择器 | $("div,p,li") | 获取多个元素 |
交集选择器 | $("li,current") | 交集元素 |
子代选择器 | $("ul>li") | 使用>号,获取亲儿子层级的元素;注意,并不会获取孙子层级的元素 |
后代选择器 | $(“ul li”) | 使用空格,选择后代选择器,获取ul下的所有li元素,包括孙子等。 |
jQuery隐式迭代
隐式迭代就是把匹配的所有元素内部进行遍历循环,给每一个元素添加css这个方法
给匹配到的所有元素进行循环遍历,执行相应的方法,而不是我们再进行循环,简化我们的操作,方便我们调用。
1
2
3
jQuery筛选选择器
语法 | 用法 | 描述 |
---|---|---|
:first | $("li:first") | 获取第一个li元素 |
:last | $("li:last") | 获取最后一个选择器 |
:eq(index) | $(li:eq(2)) | 获取到的li元素中,选择索引号为2的元素,索引号index从0开始 |
:odd | $("li:odd") | 获取到的li元素中,选择索引号为奇数的元素 |
:even | $("li:even") | 获取到的li元素中,选择索引号为偶数的元素 |
语法 | 用法 | 说明 |
---|---|---|
parent() | $("li").parent(); | 查找父级,最近一级 |
parents() | $("li").parents("选择器"); | 查找指定祖先父级 |
children(selector) | $("ul").children("li") | 相当于$("ul>li"),最近一级(亲儿子) |
find(selector) | $("ul").find("li") | 相当于$("ul li"),后代选择器 |
siblings(selector) | $(".first").siblings("li") | 查找兄弟节点,不包括自己本身 |
nextAll([expr]) | $(".first").nextAll() | 查找当前元素之后所有的同辈元素 |
prevAll([expr]) | $(".last").prevAll() | 查找当前元素之前的所有同辈元素 |
hasClass(class) | $('div').hasClass("protected") | 检查当前的元素是否含有某个特定的类 |
eq(index) | $("li").eq(2) | 相当于$("li:eq(2)"),index从0开始 |
$(".son").parent();
$('.nav').children("p").css("color","red");
$('.nav').find("p").css("color","red");
$(".content div").eq(index).siblings().hide();
$(".content div").eq(index).show();
操作css方法
jQuery可以使用css方法来修改简单元素样式;也可以操作类,修改多个样式
参数只写属性名,则返回属性值
$("div").css("width")
参数是属性名,属性值,逗号分离,是设置一组样式,属性必须加引号,值如果是数字可以不用跟单位和引号
$("div").css("width","500px")
参数可以是对象形式,方便设置多组样式。属性名和属性值用冒号隔开,属性可以不用加引号
$("div").css({
"width":"500",
"height":"1000"
})
设置类样式方法
添加类
$("div").click(function(){
$(this).addClass("current");
})
删除类
$("div").click(function(){
$(this).removeClass("current");
})
切换类
$("div").click(function(){
$(this).toggleClass("current");
})
类操作与className操作
原生JS中className会覆盖元素原先里面的类名。
jQuery里面类操作只是对指定类进行操作,不影响原先的类名
显示隐藏
show()
show([speed,[easing],[fn]])
显示参数
(1)参数可以省略,无动画直接显示
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
$("button").eq(0).click(function(){
$("div").show(1000,function(){
alert(12)
})
});
hide()
hide([speed,[easing],[fn]])
隐藏参数
(1)参数可以省略,无动画直接显示
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
$("button").eq(1).click(function(){
$("div").hide(1000,function(){
alert(1)
})
});
toggle()
toggle([speed,[easing],[fn]])
切换参数
(1)参数可以省略,无动画直接显示
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
$("button").eq(2).click(function(){
$("div").toggle(1000,function(){
alert(1)
});
滑动
slideDown()
slideDown([speed,[easing],[fn]])
(1)参数可以省略,无动画直接显示
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
$("div").slideDown(1000);
slideUp()
slideUp([speed,[easing],[fn]])
(1)参数可以省略,无动画直接显示
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
$("div").slideUp(1000);
slideToggle()
slideToggle([speed,[easing],[fn]])
1)参数可以省略,无动画直接显示
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
$("div").slideToggle(1000);
事件切换(就是鼠标经过和离开的复合写法)
hover([over],out)
(1)over:鼠标移到元素上要触发的函数(相当于mouseenter)
(2)out:鼠标移出元素要触发的函数(相当于mouseleave)
$("button").eq(2).hover(function(){
$("div").slideUp(1000);
},function(){
$("div").slideDown(1000);
});
//相当于
$("button").eq(2).hover(function(){
$("div").slideToggle(1000);
});
动画队列及其停止排队方法
动画或效果队列
动画或者效果一旦触发就会执行,如果多次触发,就会造成多个动画或者效果队列
停止排队
stop()
(1)stop()方法用于停止动画或效果
(2)注意:stop()写到动画或者效果前面,相当于停止结束上一次的动画
$("div").stop().slideToggle(1000);
淡入淡出
fadeIn()
fadeIn([speed,[easing],[fn]])
1)参数可以省略,无动画直接显示
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
$("div").stop().fadeIn(1000);
fadeOut()
fadeOut([speed,[easing],[fn]])
1)参数可以省略,无动画直接显示
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
$("div").stop().fadeOut(1000);
fadeToggle()
fadeToggle([speed,[easing],[fn]])
1)参数可以省略,无动画直接显示
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
$("div").stop().fadeToggle(1000);
fadeTo()
fadeTo([[speed],opacity,[easing],[fn]])
(1)opacity透明度必须写,取值0-1之间
(2)speed:三种预定速度之一的字符串(“show”,“normal”,or “fast”)或表示动画时长的毫秒数值(如:1000)。必须写
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”。
$("div").stop().fadeTo(1000,0.5);
自定义动画
animate()
animate(params,[speed],[easing],[fn])
参数
(1)params:想要更改的样式属性,以对像形式传递,必须写。属性名可以不带引号,如果是复合属性采用驼峰命名法borderLeft。其余参数都可以省略
(2)speed:三种预定速度之一的字符串("slow","normal",or"fast")或表示动画时长的毫秒数值
(3)easing:(Optional)用来指定切换效果,默认是“swing”,可用参数“linear”
(4)fn:回调函数,在动画完成时执行的函数,每个元素执行一次
//手风琴效果
$(function(){
$(".king li").mouseenter(function(){
$(this).stop().animate({
width:200
}).find(".small").stop().fadeOut().siblings(".big").stop().fadeIn();
$(this).siblings("li").stop().animate({
width:100
}).find(".small").stop().fadeIn().siblings(".big").stop().fadeOut();
})
})
设置或获取元素固有属性值
元素固有属性就是元素自带的属性,比如a元素里面的href,比如input元素里面的type
获取属性方法
prop("属性")
设置属性语法
prop("属性","属性值")
$("input").prop("checked")
$("a").prop("title","wwww");
元素的自定义属性
用户自己给元素添加的属性,我们称之为自定义属性。比如给div添加index=“1”
获取属性语法
attr("属性") //类似原生getAttribute()
设置属性语法
attr("属性","属性值") //类似原生setAttribute()
该方法也可以获取H5自定义属性
$("div").attr("index")
$("div").attr("index","34")
数据缓存data()
data()方法可以在指定的元素上存取数据,并不会修改DOM元素结构。一旦页面刷新,之气那存放的数据都将会被删除
附加数据语法
data("name","value") //向被选元素附加数据
获取数据语法
data("name") //向被选元素获取数据
同时,还可以读取HTML5自定义属性data-index,得到的是数字型
$("span").data("uname","andy");
$("span").data("uname")
普通元素内容html()(相当于原生innerHTML)
html() //获取元素内容
html("内容") //设置元素内容
$("div").html();//获取元素内容
$("div").html("123");//设置元素内容
普通元素文本内容text()(相当于原生innerText)
text() //获取元素内容
text("内容") //设置元素内容
$("div").text(); //获取元素内容
$("div").text("123"); //设置元素内容
设置表单值 val()
val() //获取表单值
val("内容") //设置表单内容
$("input").val(); //获取表单值
$("input").val("123"); //设置表单内容
tofixed(index)(保留几位小数方法)
(p*n).toFixed(2)//保留两位小数
jQuery尺寸
语法 | 用法 |
---|---|
width()/height() | 取得匹配元素宽度和高度值 只算width/height |
innerWidth()/innerHeight() | 取得匹配元素宽度和高度值 包含padding |
outerWidth()/outerHeight() | 取得匹配元素宽度和高度值 包含padding、border |
outerWidth(true)/outerHeight(true) | 取得匹配元素宽度和高度值包含padding、borde、margin |
div{
width: 200px;
height: 200px;
background-color: aqua;
padding: 10px;
border: 15px solid red;
margin: 20px;
}
$("div").width(500)
console.log($("div").width()); //500
console.log($("div").innerWidth());//520
console.log($("div").outerWidth());//550
console.log($("div").outerWidth(true));//590
jQuery位置
位置主要有三个:offset()、position、scrollTop()/scrollLeft()
offset()
offset()设置或返回被选元素相对于文档的偏移坐标,跟父级没有关系
该方法有2个属性left、top。offset().top用于获取距离文档顶部的距离,offset().left用于获取距离文档左侧的距离。
可以设置元素的偏移:offset({top:10,left:30})
position()
position方法用于返回被选元素相对于带有定位的父级偏移坐标,如果父级都没有定位,则以文档为准。
scrollTop()/scrollLeft()
scrollTop()方法设置或返回被选元素被卷去的头部或左侧。
遍历元素
JQuery隐式迭代对同一类元素做出了同样的操作。如果想要给同一类元素做不同操作,就需要用到遍历
语法1
$("div").each(function(index,domEle){xxx;})
each()方法遍历匹配的每一个元素。主要用DOM处理。each每一个
里面的回调函数有2个参数:index是每个元素的索引号,demEle是每个DOM元素对象,不是jQuery对象
想用jQuery方法,需要给这个dom元素转换为jquery对象
var arr=["red","blue","pink"]
$(function(){
$("div").each(function(index,domEle){
$(domEle).css("color",arr[index])
})
})
语法2
$.each(object,function(index,element){xxx;})
创建元素
$("")
$("- 我是后来创建的li
")
动态的创建了一个
添加元素
内部添加
element.append("内容")
$("ul").append(li)//放到内容的最后面
$("ul").prepend(li)//放到内容的最前面
把内容放入匹配元素内部的后面,类似于原生appendChild
外部添加
element.after("内容") //把内容放入目标元素后面
$(".test").after(div) //把内容放入目标元素后面
element.before("内容") //把内容放入目标元素前面
$(".test").before(div) //把内容放入目标元素前面
删除元素
element.remove() //删除匹配的元素(本身)
$("ul").remove()
element.empty() //可以删除匹配的元素里面的子节点 孩子
$("ul").empty();
element.html() //可以删除匹配元素里面的子节点 孩子
$("ul").html();
$(".p-action a").click(function(){
$(this).parents(".cart").remove();
})
事件注册
单个事件注册
element.事件(function(){})
$("div").click(function(){事件处理程序})
其他事件和原生基本一致
比如,mouseover、mouseout、blur、focus等
事件处理
on()绑定事件
element.on(events,[selector],fn)
1.events:一个或多个用空格分隔的事件类型,如"click"或“keydown”、
2.selector:元素的子元素选择器
3.fn:回调函数 即绑定在元素身上的侦听函数
//事件处理不同的
$("div").on({
click:function(){
$("div").css("background","black")
},
mouseover:function(){
$("div").css("background","pink")
}
})
//事件处理相同的
$("div").on("mouseover mouseout",function(){
$(this).toggleClass("togg");
})
$('ul').on('click','li',function(){
alert('hello world!');
})
动态创建的元素,click()没有办法绑定事件,on()可以给动态生成的元素绑定事件
$("ul").on("click","li",function(){
alert(11)
})
var li=$("- 我是后来的
")
$("ul").append(li);
如果有的事件只想触发一次,可以使用one()来绑定事件
$('ul').one('click','li',function(){
alert('hello world!');
})
自动触发事件
有些事件希望自动触发,比如轮播图自动播放功能跟点击右侧按钮一致。可以利用定时器自动触发右侧按钮点击事件,不必鼠标点击触发
$("div").click();//第一种简写形式 元素.事件() 会触发元素的默认行为
$("div").trigger("click");//第二种自动触发方式 会触发元素的默认行为
$("div").triggerHandler("click");//第三种自动触发方式 不会触发元素的默认行为
事件处理解绑
事件解绑off()
$("div").off() //解除了div身上的所有事件
$("div").off("click"); //解除了div身上的点击事件
$("ul").off("click","li") //解除事件委托
事件对象
事件被触发,就会有事件对象的产生
element.on(events,[selector],function(event){})
阻止默认行为:event.preventDefault()或者return false
阻止冒泡:event.stopPropagation()
如果想要把某个对象拷贝(合并)给另外一个对象使用,此时可以用$.extend()方法
语法:
$.extend([deep],target,object1,[objectN])
deep:如果设true为深拷贝,默认为false浅拷贝
target:要拷贝的对象
object1:待拷贝到第一个对象的对象
objectN:待拷贝到第N个对象的对象
浅拷贝是把被拷贝的对象复杂数据类型中的地址拷贝给目标对象,修改目标对象会影响被拷贝对象
深拷贝,前面加true,完全克隆(拷贝的对象,而不是地址),修改目标对象不会影响被拷贝对象。
var targetObj={
id:1
};
var obj={
id:1,
name:"andy"
};
$.extend(targetObj,obj);//浅拷贝
$.extend(true,targetObj,obj);//深拷贝
jQuery使用$作为表示符,随着jQuery的流行,其他js库也会用这$作为标识符,这样一起使用会引起冲突
需要一个解决方案,让jQuery和其他的js库不存在冲突,可以同时存在,这就叫多库共存
解决方案:
把里面的$符号统一改为jQuery。比如jQuery("div")
jQuery变量规定新的名称:$noConflict() var xx=$.noConflict()
jQuery功能比较有限,想要更复杂的特效效果,可以借助jQuery插件完成
jQuery插件使用步骤
常用插件:
瀑布流
图片懒加载(图片使用延迟加载在可提高网页下载速度。也能帮助减轻服务器负载,当我们页面滑动到可视区域,再显示图片)
全屏滚动
中文翻译网站:http://www.dowebok.com/demo/2014/77/
Bootstrap JS 插件:
bootstrap框架也是依赖于jQuery开发的,因此里面的js插件使用,也必须引入jQuery文件
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流