jQuery必知必会
原文地址:https://my.oschina.net/u/218421/blog/37391
jQuery优势
轻量级 
   强大的选择器
   出色的DOM操作的封装
   可靠的事件处理机制
   完善的Ajax
   不污染顶级变量
   出色的浏览器兼容性
   链式操作方式
   隐式迭代
   行为和结构层分离
   丰富的插件支持
   完善的文档
   开源
jQuery选择器是其最核心的部分 分为四大类
基本选择器
层次选择器
过滤选择器
表单选择器
基本选择器是最常用的选择器  可以根据标签的名字、ID名字或者class名字来选择元素
#id  根据指定的id来匹配元素
.class   根据制定的类名字来匹配元素
element   根据指定的元素的名字匹配元素
*   匹配所有的元素
selector1,selector2,…selectorN   将每一个匹配到的元素合并到一起返回
层次选择器
jQuery(‘ancestor   descendant’):选取ancestor中的所有的descendant(后代)元素
jQuery(‘parent>child’):选取parent中的所有的child(子元素)
jQuery(‘prev+next’):选取紧跟在prev后的同级别的next元素可用next()方法代替
jQuery(‘prev~siblings’):选取紧跟在prev后的同级别的所有的元素  可用nextAll()方法代替
过滤选择器分为:
基本过滤选择器
内容过滤选择器
可见性过滤选择器 
子元素过滤选择器
属性过滤选择器
表单过滤选择器
基本过滤选择器
:first    选取第一个元素
:last     选取最后一个元素
:not(selector)  去除与跟定选择器匹配的元素
:even    选取索引值为偶数的所有的元素 从0开始
:odd      选取索引值为奇数的所有的元素 从0开始
:eq(index)   选取索引值等于index的所有的元素 从0开始
:gt(index)     选取索引值大于index的所有的元素 从0开始
:lt(index)      选取索引值小于index的所有的元素  从0开始
:header    选取所有的标题元素 例如h1 h2  h3等
:animated   选取所有的正在执行动画的元素
内容过滤选择器
:contains(text)    选取含有文本内容为text的元素
:empty    选取不包含子元素的空元素
:has(selector)   选取含有选择器所匹配的元素的元素
:parent   选取含有子元素的元素
可见性过滤选择器 
:hidden    选取所有的不可见的元素
:visible     选取所有的可见的元素
属性过滤选择器
[attribute]    选取拥有此属性的元素
[attribute=value]    选取属性值为value的元素
[attribute!=value]   选取属性值不等于value的元素 也包括不含属性名为attribute的元素
[attribute^=value]   选取属性值以value开头的元素
[attribute$=value]    选取属性值以value结尾的元素
[attribute*=value]    选取属性值含有value的元素
[selector1][selector2][selector3]   用属性选择器合并成一个复合选择器
子元素过滤选择器
nth-child(index/even/odd/equation)   选取每个父元素下的第index子元素/奇元素/偶元素/比较元素  索引从1开始
first-child   选取每个父元素的第一个子元素
last-child    选取每个父元素的最后一个元素
only-child   如果该元素是其父元素的唯一的子元素  那么该元素就会匹配到
注意与基本过滤选择器的区别
表单过滤选择器
:enabled     选取所有的可见的元素
:disabled    选取所有的不可见的元素
:checked    选取所有的选中的元素(单选框、复选框)
:selected    选取所有的被选中的元素(下拉菜单)
表单选择器
:input     选取所有的<input>、<textarea>、<select>、           <button>元素
:text       选取所有的单行文本框
:password     选取所有的密码框
:radio    选取所有的单选按钮
:checkbox   选取所有的复选按钮
:submit       选取所有的提交按钮
:image   选取所有的图像按钮
:reset    选取所有的重置按钮
:button  选取所有的button
:file     选取所有的上传域
:hidden  选取所有的不可见元素 (包括display为none的)
jQuery中DOM操作:
append()     向匹配的元素追加内容
appendTo()    颠倒append()操作
prepend()    向匹配的元素前置内容
preprendTo()   颠倒prepend()操作
after()    在匹配的元素后插入内容
insertAfter()   颠倒after()操作
before()  在匹配的元素前插入内容
insertBefore()   颠倒before()操作
元素操作:
remove()  删除节点  例 jQuery(‘ul li’).remove()  也可在remove()中添加过滤条件 jQuery(‘ul li’).remove(‘li[title!=菠萝]’)
empty()  清空节点  jQuery(‘ul li:eq(1)’).empty()  清空第二个li元素中的内容
clone()   复制节点 jQuery(‘#li’).clone().appendTo(‘ul’)  如果想在复制节点的同时也具有行为 可用clone(true)
replaceWith()  替换节点  如jQuery(‘p’).replaceWith(‘<strong>你最不喜欢的水果是?</strong>’)
replaceAll()   颠倒replaceWith()操作  如jQuery(‘<strong>你最不喜欢的水果是?</strong>’).replaceAll(‘p’);
wrapAll()    将所有的匹配的元素用一个元素来包裹  如jQuery(‘strong’).wrapAll(‘<b></b>’)  会得到
        <b>
             <strong>你最喜欢的水果1</strong>
             <strong>你最喜欢的水果2</strong> 
        </b>
wrap()  将每个匹配的元素用一个元素包裹起来 如jQuery(‘strong’).wrap(‘<b></b>’)   会得到
        <b><strong>你最喜欢的水果1</strong></b>
        <b><strong>你最喜欢的水果2</strong></b>
wrapInner()  将每个匹配的子元素用另外一个元素包裹起来
属性操作
 获取和设置属性   
      获取:   jQuery(‘p’).attr(‘title’)
      设置属性:jQuery(‘p’).attr(‘title’,’your title’);
      删除属性:jQuery(‘p’).removeAttr(‘title’)
样式操作
       jQuery(‘p’).attr(‘class’,’classname’);
追加样式
        jQuery(‘p’).addClass()
移除样式
        jQuery(‘p’).removeClass()
toggleClass()    切换样式
hasClass()  判断是否含有某个样式 同is(‘.className’)
html()     获取或者设置html代码
text()    获取或者设置文本框的值
val()    获取或者设置表单元素的值
children()   获取匹配元素的子元素 
next()    获取匹配元素后紧邻的同辈的元素
prev()    获取匹配元素前紧邻的同辈的元素
nextAll()   获取匹配元素后的所有的同辈的元素
siblings()   获取匹配元素前台所有的同辈的元素
closest()  获取匹配元素最近的元素
find()   查找匹配元素的所有的后代元素
css()   设置获取获取css样式  可以传输json格式的参数  批量的设置多个样式
height()  设置或者获取元素的高度 注意和css(‘height’)的区别
width()  设置或者获取元素的宽度  注意和css(‘width’)的区别
offset()  获取元素在当前视窗的相对偏移  返回的是个对象 包括top和left两个属性
position()   获取元素相对于最近的一个position样式属性设置为relative和absolute的祖父节点的相对的偏移  返回的也是个对象                 包括top和left两个属性
scrollTop()  获取元素的滚动条距顶端的距离
scrollLeft ()   获取元素的滚动条距左边的距离
jQuery中的事件
注意jQuery(document).ready()和window.onload的区别
事件绑定  bind(type,[,data],fn) 第一个为事件类型 包括             blur,focus,load,resize,scroll,unload,click,dbclick,mousedown,mouseup,mousemove,mouseover,mouseout,
mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error等,
也可以是自定义事件名称 第二个为可选的参数 第三个为绑定的处理函数
简写绑定操作
jQuery(‘p’).click(fn),jQuery(‘mouseover’).click(fn)
合成事件
主要有两个  
jQuery(‘p’).toggle(fn1,fn2)  单击的时候分别执行fn1和fn2两个函数
hover(fn1,fn2)   鼠标移上去和移走的时候分别执行fn1和fn2两个函数
事件冒泡
如果想阻止冒泡的话可以用event.stopPropagation()
阻止事件的默认行为 可以采用event.preventDefault()
如果上面两个都想阻止 可以直接在fn中return false
事件对象的属性
event.type:获取事件的类型 如click  dbclick
event.preventDefault():阻止事件的默认行为
event.stopPropagation():阻止事件的冒泡
event.target()   获取触发事件的元素
event.relatedTarget()   获取相关元素
event.pageX()  获取光标相对于页面的x坐标
event.pageY()   获取光标相对于页面的y坐标
event.which()   在鼠标单击事件中获取到鼠标的左 中 右键
event.metaKey()   键盘事件中获取ctrl键
event.originalEvent()   指向原始的事件对象
移除事件
移除某个元素的单击事件  jQuery(‘p’).unbind(‘click’)
移除某个元素的所有的事件 jQuery(‘p’).unbind()
假如某个元素的单击事件绑定了多个函数 可用jQuery(‘p’).unbind(‘click’,fn1)来
解除fn1的事件处理程序
模拟操作
常用模拟:  不一定要单击才会触发  可以用trigger()方法模拟操作 
                jQuery(‘#btn’).trigger(‘click’)
触发自定义事件  
jQuery(‘#btn’).bind(‘myClick’,fn1)  可以通过jQuery(‘#btn’).trigger(‘myClick’)触发
传递数据  trigger(type,[,data])
trigger()方法会执行浏览器的默认行为 如果不想执行浏览器的默认行为 可用jQuery(‘input’).triggerHander(‘focus’)
可以一次绑定多个事件类型
jQuery(‘div’).bind(‘mouseover  mouseout’,fn1)
添加事件的命名空间 便于管理
jQuery(‘div’).bind(‘click.plugin’,fn1)
jQuery(‘div’).bind(‘mouseover.plugin’,fn2)
jQuery(‘div’).bind(‘dbclick’,fn3)
在执行jQuery(‘div’).unbind(‘.plugin’)的时候 dbclick事件依然会触发
相同事件名称 不同命名空间的执行方法
jQuery(‘div’).bind(‘click’,fn1)
     jQuery(‘div’).bind(‘click.plugin’,fn2)
     jQuery(‘#btn’).click
     (
           function()
           {
                jQuery(‘div’).trigger(‘click!’);  //注意click后面的感叹号
           }
      )
当单击div元素的时候  fn1和fn2事件处理程序都会执行 当单击button元素的时候,
只会触发fn1的事件处理程序
jQuery中的动画
show()   显示元素
hide()    隐藏元素
show(‘slow’)    让元素在600毫秒内显示出来
show(‘fast’)   让元素在200毫秒内显示出来
show(‘normal’)   让元素在400毫秒内显示出来
show(1000)  让元素在1000毫秒内显示出来
hide()方法带参数时候与show()方法相似
fadeIn()   增加不透明度
fadeOut()   降低不透明度
slideUp()   从下向上隐藏元素  可以带参数
slideDown()  从上到下显示元素 可以带参数
自定义动画方法 animate()
jQuery(‘p’).animate({‘left’:’500px’},3000)  使得元素在3秒内向右移动500个像素
jQuery(‘p’).animate({‘left’:’+=500px’},3000)  在当前位置累加500个像素
jQuery(‘p’).animate({‘left’:’-=500px’},3000)   在当前位置累减500个像素
多重动画
同时执行多个动画:jQuery(‘p’).animate({‘left’:’500px’,’height’:’200px’},3000)
按顺序执行动画:
jQuery(‘p’).animate({‘left’:’500px’},3000).animate({‘height’:’200px’},3000)
fadeTo(3000,’0.2’)  在3秒内将元素的不透明度变为0.2
动画的回调函数
jQuery(‘p’).animate({‘top’:’200px’,’width’:’200px’},200,fn)  执行完动画后执行fn
停止动画
stop(false,false)
is(‘:animated’)  判断某元素是否处于动画状态
toggle()  用来代替show和hide方法 会改变高度 宽度和不透明度
slideToggle()  用来代替slideUp()和slideDown()  只改变高度
jQuery与Ajax应用
分三层jQuery.ajax()是第一层,jQuery(param).load() /jQuery.get()/jQuery.post()是第二层,
jQuery.getScript()/jQuery.getJSON()是第三层
load()方法
1.载入html文档
   load(url,[,data],[,callback]  url :请求地址
   data:发送至服务器端的key/value值
   callback:回调函数  无论成功还是失败都会调用回调函数
2.筛选载入的HTML文档
   jQuery(‘#resText’).load(‘test.html   .param’)
3.传递方式
   根据data自动指定 如果没有参数传递 采用get方式传递 反之  则自动转化为post方式
4.回调函数
function(responseText,txtStatus,XMLHttpRequest)
{
}
responseText :请求返回的内容
textStatus:请求状态 success/error/notmodified/timeout四种
XMLHttpRequest:XMLHttpRequest对象
jQuery.get()
全局函数
jQuery.get(url,[,data],[,callback],[,type])
url:请求的地址
data:发送至服务器端的key/value数据会作为QueryString附加到请求的URL中
callback:载入成功时的回调函数
type:服务器返回内容的格式 xml/html/json/script/text/_default
callback形式如下
function(data,textStatus)
{
//data:返回的内容 可以是XML JSON或者html片段等
//textStatus:请求状态 success/error/notmodified/timeout
}
数据格式:
html片段:
     实现起来只需要很少的工作量,但是这种固定的数据结构并不一定能够在其它的web程序中得到重用
XML文档:
     该数据可以利用强大的jQuery选择器的功能,这种数据的可移植性是其它的数据格式所无法比拟的,因此以这种格式提供的数据的重用性大大的提高,不过xml体积相对庞大,解析和操作他们的速度要慢一些
JSON格式
在不远的将来 新版的JavaScript中的XML将会和JSON一样容易解析,不过在它到来
之前,json依然有着很强的生命力
json的格式非常的严格,构建的json文件必须是完整无误的,任何的一个不匹配或者
缺少逗号,都会导致页面脚本的终止运行,甚至还会带来更加严重的负面影响
post()方法
它与get()方法的结构和使用方式都相同,不过重大区别如下
1.GET请求会将参数跟在URL后面进行传递,而POST请求则是作为HTTP消息的实体内容发送给web服务器,当然 在ajax请求中 这种区别对用户来说是不可见的 
2.GET请求对传输的数据大小有限制(通常不能大于2K),而使用POST方式传输的数据量比GET方式大的多(理论上不受限制)
3.GET方式请求的数据会被浏览器缓存起来,因此其它人便可以从浏览器的历史记录中读取到这些数据,例如帐号和密码等等,在某些情况下GET方式会带来严重的安全性问题,而POST方式相对来说就可以避免这些问题
getScript()方法
动态加载script文件 可以用回调函数
getJSON()
动态加载JSON文件,处理JSON文件的时候可以利用each函数
jQuery.each()不同于jQuery对象的each()  它是一个全局函数,不操作jQuery对象
而是以一个数组或者对象作为第一个参数,以一个回调函数作为第二个参数,回调函数中有两个参数 第一个为索引 第二个为对应的变量或者内容
ajax()
只有一个参数 以key/value的形式存在
url:发送请求的地址
type:请求方式 POST或者GET 默认为GET 注意其它的HTTP请求方法
timeout:设置请求的超时时间(毫秒) 此设置将覆盖ajaxStart()等方法的全局设置
data:请求的数据 一般的JSON格式的数据
dataType:预期返回的数据类型
beforeSend:发送请求前可修改的XMLHttpRequest对象的函数  例如添加自定义的
HTTP头.在beforeSend()中如果返回false可以取消本次ajax请求
complate:请求完成后的回调函数(请求成功或者失败的时候均会调用)
                    function(XMLHttpRequest,textStatus)
                    {
}
success:请求成功时的回调函数(只有请求成功的时候才会回调)
                   function(data,textStatus)
                  {
                  }
error:请求失败时的回调函数(只有在请求失败的时候才会调用)
                  function(XMLHttpRequest,textStatus,errorThown)
                  {
                  }
global:默认为true,表示是否会触发全局的ajax事件,为false表示不会触发全局事件
序列化元素
serialize()  将DOM内容序列化为字符串
serializeArray()   将DOM内容序列化为JSON格式的数据
param()   用来对一个json对象进行序列化
Ajax全局函数
ajaxStart(callback) :  ajax开始请求的时候调用的函数
ajaxComplete(callback):  ajax请求完成时执行的函数
ajaxError(callback):   ajax请求错误的时候触发的函数 捕捉到的错误作为最后的一个参数传递
ajaxSend(callback):  ajax请求发送前要执行的函数
ajaxSuccess(callback):  ajax请求成功的时候执行的函数
ajaxStop(callback):  ajax请求停止的时候触发的函数
插件的使用和写法
livequery()的使用方法
ui插件的使用方法
cookie插件的使用方法
自定义jQuery插件的写法
jQuery必知必会的更多相关文章
- H5系列之History(必知必会)
		
H5系列之History(必知必会) 目录 概念 兼容性 属性 方法 H5方法 概念 理解History Api的使用方式 目的是为了解决哪些问题 作用:ajax获取数据时 ...
 - 读书笔记汇总 - SQL必知必会(第4版)
		
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
 - 读书笔记--SQL必知必会--建立练习环境
		
书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...
 - 读书笔记--SQL必知必会12--联结表
		
12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...
 - 读书笔记--SQL必知必会18--视图
		
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
 - 《MySQL 必知必会》读书总结
		
这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...
 - 《SQL必知必会》学习笔记(一)
		
这两天看了<SQL必知必会>第四版这本书,并照着书上做了不少实验,也对以前的概念有得新的认识,也发现以前自己有得地方理解错了.我采用的数据库是SQL Server2012.数据库中有一张比 ...
 - SQL 必知必会
		
本文介绍基本的 SQL 语句,包括查询.过滤.排序.分组.联结.视图.插入数据.创建操纵表等.入门系列,不足颇多,望诸君指点. 注意本文某些例子只能在特定的DBMS中实现(有的已标明,有的未标明),不 ...
 - .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)
		
Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C# ...
 - 0005 《SQL必知必会》笔记01-SELECT语句
		
1.SELECT基本语句: SELECT 字段名1,···,字段名n FROM 表名 2.检索所有字段,用"*"替换字段名,这会导致效率低下 SELECT * FROM 表名; 3 ...
 
随机推荐
- sql中别名加as和不加as的区别
			
select UserName as 用户名,PassWord as 密码 from user 与 select UserName 用户名,PassWord 密码 from user 中as用于不用的 ...
 - 【fiddler安装】解决“Creation of the root certificate was not successful.”的问题
			
问题:在安装过fiddler后,会出现“Creation of the root certificate was not successful.”的问题,这个是说证书安装不成功. 原因:在使用Fidd ...
 - idea 忽略提交文件
			
https://blog.csdn.net/wangjun5159/article/details/74932433 https://blog.csdn.net/m0_38001814/article ...
 - MySQL容器化详细教程
			
前言: 上篇文章介绍了Docker工具的安装及常用命令使用.本篇文章我们会介绍如何在Docker中运行MySQL实例,可能有的小伙伴会问:为什么要在Docker里运行MySQL呢?因为在Docker ...
 - ant笔记
			
目录 ant远程部署 ant的使用,命令! 参考文献: ant+maven一键打包springboot上传服务器发布 判断linux文件.文件夹是否存在 shell中脚本参数传递的两种方式 shell ...
 - 深浅拷贝、集合set、函数、日志
			
#-----深浅拷贝---- import copy a = ["xiaoming",111,[5000,2000]] b = a print("b:%s" % ...
 - 十六、python面向对象基础篇
			
面向对象基础: 在了解面向对象之前,先了解下变成范式: 编程范式是一类典型的编程风格,是一种方法学 编程范式决定了程序员对程序执行的看法 oop中,程序是一系列对象的相互作用 python支持多种编程 ...
 - MySQL小测试
			
<> 2.创建一个字符集为utf8的数据库,将数据库字符集修改为gbk create database db1 charset='utf8'; alter database db1 cha ...
 - keil中使用——变参数宏__VA_ARGS__
			
本文说的__VA_ARGS__,就是一个可变参数宏,与printf中可变参数的宏定义一个道理,是新C99规范中增加的. __VA_ARGS__详情内容 1.关于__VA_ARGS__ __VA_ARG ...
 - 前端 / JavaScript 导出PDF的实践
			
1.库:jspdf,自己定义一个高宽,如A4的210mm×297mm 2.让设计给背景图(包括:页眉页脚),水印图(背景透明,高宽和你的PDF单页一致)以及很多,能设计给的设计要给,因为在pdf上,排 ...