jQuery介绍
- jQuery是一个轻量级的、兼容多浏览器的JavaScript库。
- jQuery使用户能够更方便地处理HTML Document、Events、实现动画效果、方便地进行Ajax交互,能够极大地简化JavaScript编程。它的宗旨就是:"Write less, do more."
优势
- 一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。
- 丰富的DOM选择器,jQuery的选择器用起来很方便,比如要找到某个DOM对象的相邻元素,JS可能要写好几行代码,而jQuery一行代码就搞定了,再比如要将一个表格的隔行变色,jQuery也是一行代码搞定。
- 链式表达式。jQuery的链式操作可以把多个操作写在一行代码里,更加简洁。
- 事件、样式、动画支持。jQuery还简化了js操作css的代码,并且代码的可读性也比js要强。
- Ajax操作支持。jQuery简化了AJAX操作,后端只需返回一个JSON格式的字符串就能完成与前端的通信。
- 跨浏览器兼容。jQuery基本兼容了现在主流的浏览器,不用再为浏览器的兼容问题而伤透脑筋。
- 插件扩展开发。jQuery有着丰富的第三方的插件,例如:树形菜单、日期控件、图片切换插件、弹出窗口等等基本前端页面上的组件都有对应插件,并且用jQuery插件做出来的效果很炫,并且可以根据自己需要去改写和封装插件,简单实用。4
选择
- 1.x:兼容IE678,使用最为广泛的,官方只做BUG维护,功能不再新增。因此一般项目来说,使用1.x版本就可以了,最终版本:1.12.4 (2016年5月20日)
- 2.x:不兼容IE678,很少有人使用,官方只做BUG维护,功能不再新增。如果不考虑兼容低版本的浏览器可以使用2.x,最终版本:2.2.4 (2016年5月20日)
- 3.x:不兼容IE678,只支持最新的浏览器。需要注意的是很多老的jQuery插件不支持3.x版。目前该版本是官方主要更新维护的版本。
维护IE678是一件让人头疼的事情,一般我们都会额外加载一个CSS和JS单独处理。值得庆幸的是使用这些浏览器的人也逐步减少,PC端用户已经逐步被移动端用户所取代,如果没有特殊要求的话,一般都会选择放弃对678的支持。
jQuery对象
jQuery对象就是通过jQuery包装DOM对象后产生的对象。jQuery对象是 jQuery独有的。如果一个对象是 jQuery对象,那么它就可以使用jQuery里的方法:例如$(“#i1”).html()。
$("#i1").html()
的意思是:获取id值为i1
的元素的html代码。其中html()
是jQuery里的方法。
相当于:document.getElementById("i1").innerHTML;
虽然jQuery对象
是包装DOM对象
后产生的,但是jQuery对象
无法使用DOM对象
的任何方法,同理DOM对象
也没不能使用jQuery
里的方法。
一个约定,我们在声明一个jQuery对象变量的时候在变量名前面加上$:
var $variable = jQuery对像var variable = DOM对象$variable[0] //jQuery对象转成DOM对象
拿上面那个例子举例,jQuery对象和DOM对象的使用:
$("#i1").html(); //jQuery对象可以使用jQuery的方法$("#i1")[0].innerHTML; // DOM对象使用DOM的方法
jQuery语法
基本语法如下:
$(selector).action()
有如下一个约定,我们在声明一个jQuery对象变量时候,在变量名前加上$符号,如下实例:
var $variable=jQuery对象var variable = DOM对象$variable[0] //jQuery对象转成DOM对象
选择器
基本选择器
id选择器: $("#id值")class选择器: $(".c1")所有元素选择器: $("*")标签名选择器: $("div")组合选择器: $("#i1, p")
层级选择器
下述中x和y可以是任意选择器:
后代选择器: $("x 空格 y")---x的所有后代y(子子孙孙)儿子选择器: $("x > y")---x的所有儿子y(儿子)毗邻选择器: $("x +y")---找到所有紧挨在x后面的y兄弟选择器: $("x ~y")---x之后所有的兄弟y
属性选择器
注意:双引号里面用单引号
[attribute] //具有属性[attribute=value] // 属性等于[attribute!=value] // 属性不等实例:$("input[type='checkbox']"); // 取到checkbox类型的input标签$("input[type!='text']"); // 取到类型不是text的input标签 注意当外层引用了双引号,内层应换为单引号
实例:$("input[type='checkbox']"); // 取到checkbox类型的input标签$("input[type!='text']"); // 取到类型不是text的input标签
例子:
属性选择器 lihsi
基本筛选器
下述基本筛选器主要用在选择器内对选择器做进一步筛选,介绍如下:
:first // 第一个:last // 最后一个:eq(index) // 索引等于index的那个元素:even // 匹配所有索引值为偶数的元素,从 0 开始计数:odd // 匹配所有索引值为奇数的元素,从 0 开始计数:gt(index) // 匹配所有大于给定索引值的元素:lt(index) // 匹配所有小于给定索引值的元素:not(元素选择器)// 移除所有满足not条件的标签:has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)
例子:
表格隔行变色
# | 姓名 | 年龄 |
---|---|---|
1 | jassin | 22 |
2 | lishi | 21 |
3 | Acer | 21 |
1 | jassin | 22 |
2 | lishi | 21 |
3 | Acer | 21 |
1 | jassin | 22 |
2 | lishi | 21 |
3 | Acer | 21 |
has问题解决 1span 0 span 1
not与has
// 注意:// 1、这里的has和not不是有和没有的意思,之间没什么意思// 2、:not和:has通常用.not() 和.has()代替。// 3、$("div:has(.c1)") 等价于$("div .c1")并不等价于$("div.c1")
not: 写在引号里面的: --> $("#my-checkbox input:not(:checked)") 写在外面当方法用的 --> $("#my-checkbox input").not(":checked") has: 写在引号内表示有什么的 --> $("label:has('input')") 写在外面当方法用的: --> $("label").has("input")
03 支持批量操作 div 0div 1p 0
p 1
p 2
(1)DOM对象与jQuery对象之间转换
当DOM转换为jQuery对象的变量名前加 $ 前缀,表示该变量名为jQuery对象
转换 我是div标签
表单常用筛选
:text:password:file:radio:checkbox:submit:reset:button
表单对象属性
:enabled:disabled:checked:selected
例子:、
表单对象示例 123-----------------$(":selected") // 找到所有被选中的option
筛选器方法
找下一个元素:
$("#id").next()$("#id").nextAll()$("#id").nextUntil("#i2")
找上一个元素:
$("#id").prev()$("#id").prevAll()$("#id").prevUntil("#i2")
例子
上一个标签与下一个标签
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
找父标签:
$("#id").parent()$("#id").parents() // 查找当前元素的所有的父辈元素$("#id").parentsUntil() // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。
例子:
parent示例
# | 姓名 | 爱好 | 操作 |
---|---|---|---|
1 | Egon | 杠娘 | |
2 | Alex | 吹牛逼 | |
3 | Yuan | 日天 |
找兄弟标签:
查找所有兄弟标签: $("div").siblings()
找儿子标签:
$("div").children(".test")
查找标签
$("div").find(".test") // 搜索所有与指定表达式匹配的元素。这个函数是找出正在处理的元素的后代元素的好方法
从一个范围里找
补充:
.first()// 获取匹配的第一个元素.last()// 获取匹配的最后一个元素.not()// 从匹配元素的集合中删除与指定表达式匹配的元素.has()// 保留包含特定后代的元素,去掉那些不含有指定后代的元素。
$("div").not(".c2") // 找到所有div,再把有.c2去掉 // not是从当前找的div里面找 // has是从后代里面找
左侧菜单
左侧菜单示例 菜单一菜单二菜单三p
操作标签
样式操作
样式类
addClass();// 添加指定的CSS类名。removeClass();// 移除指定的CSS类名。hasClass();// 判断样式存不存在toggleClass();// 切换CSS类名,如果有就移除,如果没有就添加。
例子:
Title
css
css("color","red")//DOM操作:tag.style.color="red"
$("").css("color", "red") --> .css({"color": "red", "border": "1px solid black"})
示例:
$("p").css("color", "red"); //将所有p标签的字体设置为红色
位置:
position(区别) 1. fixed 2. relative --> 相对位置,相对自己原来应该在的位置 3. absolute --> 绝对位置,相对上一级相对定位过的父标签 4. static
jQuery: offset()// 获取匹配元素在当前视口的相对偏移position()// 获取匹配元素相对父元素的偏移scrollTop()// 获取匹配元素相对滚动条顶部的偏移scrollLeft()// 获取匹配元素相对滚动条左侧的偏移
.offset()方法允许我们检索一个元素相对于文档(document)的当前位置。和 .position()的差别在于: .position()是相对于相对于父级元素的位移。
示例:
offset()和position():
Title
scrollTop() :获取匹配元素相对滚动条顶部的偏移;$(window).scroll() : 滚动触发,具体应用见如下返回顶部的实例:
位置相关示例之返回顶部 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
尺寸操作
height()width()innerHeight() // 内填充innerWidth()outerHeight() // 外填充outerWidth()
例子:
Title
文本操作
HTML代码:
html()// 取得第一个匹配元素的html内容html(val)// 设置所有匹配元素的html内容
文本值:
text()// 取得所有匹配元素的内容text(val)// 设置所有匹配元素的内容
Title 111222333444555
值:
val()// 取得第一个匹配元素的当前值val(val)// 设置所有匹配元素的值val([val1, val2])// 设置checkbox、select的值
Title check1 check2radio1 radio2 radio3
城市 北京市 上海市 广州市 深圳市
爱好 篮球 足球 双色球
爱好
性别
女 男
文本操作之登录验证
属性操作
val() ---> input框 、 多选的select *****取值是默认取第一个匹配元素的值***** *****设置值是设置所有的标签的值*****attr() 获取ID、自定义属性prop() 推荐用于获取和设置checkbox和radio的值