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插件的写法

原文地址:https://www.cnblogs.com/dyh004/p/11551341.html

时间: 2024-11-03 16:02:14

jQuery必知必会的相关文章

MySQL必知必会 学习笔记(一)

第一章  了解SQL 模式:   关于数据库和表的布局以及特性的信息.[描述表可以存储什么样的数据,数据如何分解,各部分信息如何命名等等,可以用来描述数据库中特定的表以及整个数据库(和其中表的关系)]. 第二章 MySQL简介 MySQL是一种DBMS,即它是一种数据库软件.基于客户机----服务器的数据库. MySQL工具: 1.mysql 命令行实用程序 2.MySQL Administrator 3.MySQL query Browser 第四章 检索数据 LIMIT 5 表示MySQL返

mysql 必知必会总结

以前 mysql 用的不是很多, 2 天看了一遍 mysql 必知必会又复习了一下基础.  200 页的书,很快就能看完, 大部分知识比较基础, 但还是了解了一些以前不知道的知识点.自己做一个备份,随时查看. 命令:sql 不区分大小写,语句大写,列.表名小写是一种习惯连接命令:mysql -u user_name –h example.mysql.alibabalabs.com –P3306 –pxxxxquithelp show; // 查看所有 show 命令show databases;

JSON必知必会学习总结(一)

七月第一周,从学校毕业回来上班的第一周.离开一段时候后,再次回来重新工作,有了很多新的认识,不再是实习时那么混混沌沌了.每天我自己该做什么,怎么做,做到什么程度更清晰了.除了要去完成我负责的工作,我开始去想除了完成工作我要从中获得什么. 今天早晨走的时候,随手塞包里一本薄薄的书--<JSON必知必会>,白天间隙的时候看了前两章,这两章设计的内容平时基本接触过,但是没有系统的总结过,看完之后清晰了很多. 首先,JSON是什么,这本书是说JSON是一种数据交换格式,被许多系统用于数据交换. 数据交

SQLServer:《SQL必知必会》一书的读书笔记(五)

第5课 高级数据过滤 5.1 组合 WHERE 子句 第4课介绍的 WHERE 子句在过滤数据时都是用单一的条件. 5.1.1 AND 操作符 检索由供应商 DLL01 制造且价格小于等于 4 美元的所有产品的名称和价格: SELECT prod_id, prod_price, prod_name FROM Products WHERE vend_id = 'DLL01' AND prod_price <= 4; 5.1.2 OR 操作符 检索任一个指定供应商制造的所有产品的名称和价格: SEL

.NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)

Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一些列是使用.NET/C#来展现,但是同样适用于其他类似的OO技术平台,这些技术点可能称不上完整的技术,但是它是经验的总结,是掉过多少坑之后的觉醒,所以有必要花几分钟时间记住它,在真实的项目开发中你就知道是多么的有帮助.好了,废话不说了,进入主题. 我们在开发服务时为了调试方便会在本地进行一个基本的模块测试,你也可以认为是集

《MySQL必知必会》读书笔记_4

PS:一个实际的存储过程案例 CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_delete_article_by_id`(IN `id` int) BEGIN #Routine body goes here... DECLARE temp INT; SET @aid = id; SELECT COUNT(*) FROM gk_reply_article WHERE a_id = @aid INTO temp; IF(temp <> 0) THEN

移动前端开发人员必知必会:移动设备概述

因为工作岗位的变换带来工作内容的变动,对于移动网站的前端开发已经疏远了好几个月,在这好几个月中有很多新的东西出现,自己所掌握的一些东西也已经陈旧,所以选择了这本书<HTML5触摸界面设计与开发>来系统地学习和整理一下关于移动网站前端开发的知识体系. 之所以选择这本书,一是因为这本书比较新,2014年04月发的第一版.其二是因为作者Stephen Woods,这是Flickr团队的资深前端,Yahoo主页的Javascript技术平台正是出自此人之手. 接下来的时间里会陆续上传关于这本书学习的一

mysql学习--mysql必知必会1

?? 例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式处理. (.)是正則表達式的一个符号,表示匹配随意一个字符: mysql> select prod_name -> from products -> where prod_name regexp '.000' -> order by prod_name; +--------------

《MySQL 必知必会》读书总结

这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. ? ? 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter password:****** 显示数据库 mysql>SHOW DATABASES; 选择数据库 mysql>USE mytest; 显示数据库中的表 mysql>SHOW TABLES; 显示表列 mysql>SHOW COLUMNS FROM tmall_user; mysql

rime 必知必會

https://github.com/rime/home/wiki/CustomizationGuide Rime 定製指南 必知必會 建議您在定製 Rime 輸入法之前瞭解 Rime 輸入方案的概念.Rime 中的數據文件分佈及作用等基礎知識. 必知必會 重新佈署的操作方法 [中州韻]點擊輸入法狀態欄上的 ? (Deploy) 按鈕 或:如果找不到狀態欄,在終端輸入以下命令,可觸發自動部署: rm ~/.config/ibus/rime/default.yaml; ibus-daemon -d