锋利的jQuery总结

jQuery对象和DOM对象的相互转换

DOM(Document Object Model,文档对象模型),每一份DOM都可以表示成一棵树
    jQuery对象是通过jQuery包装DOM对象后产生的对象

jq对象转DOM:[index]和get(index)

例:

var $cr = $("#cr") //jq对象
var cr = $cr[0]    //DOM对象
var cc = $cr.get(0)//DOM对象

DOM对象转jq:

var cr = document.getElementById("cr")  // DOM对象
var $cr = $(cr)  //jq对象

解决jq与其他库的冲突

var $j = jQuery.noConflict()           //自定义一个快捷方式
$j(function(){                                 //使用这个快捷方式代替jquery
    $j("p").click(function(){
        console.log($j(this).text())
    })
})
$("pp").style.display = 'none'  //使用prototype

jq选择器

基础选择器

选择器 描述 返回 示例
#id 根据给定的id匹配一个元素 单个元素 $("#test")选取id为test的元素
.class 根据给定的类名匹配元素 集合元素 $(".test")
element 根据给定的元素名匹配元素 集合元素 $("p")选取所有<p>元素
* 匹配所有元素 集合元素 $("*")选取所有的元素
select1,select2... 将每一个选择器匹配到的元素合并后返回 集合元素 $("div,p,.test")

层次选择器

选择器 描述 返回 示例
$("ancestor descendant") 选取ancestor元素里所有descendant()后代元素 集合元素 $("div > span") 选取<div>元素下元素名是<span>的子元素
$("parent >child") 选取parent元素下的child子元素,与$("ancestor descendant")有区别,$("ancestor descendant")选择的是后代元素 集合元素 $("div>span")
$("prev+next") 选择紧接在prev元素后的next元素 集合元素 $(".one +div") 选取class为one的下一个<div>元素
$("prev~siblings") 选择prev元素之后的所有siblings元素 集合元素 $("#two~div")选取id为two的元素后面的所有<div>兄弟元素

基本过滤选择器

选择器 描述 返回 示例
:first 选取第一个元素 单个元素 $("div:first")
:last 选取最后一个元素 单个元素 $("div:last")
:not(selector) 去除u所有与给定选择器匹配的元素 集合元素 $("input:not(.myclass)")
:even 选取索引是偶数的所有元素,索引从0开始 集合元素 $("input:even")
:odd 选取索引是奇数的所有元素,索引从0开始 集合元素 $("input:odd")
:eq(index) 选取索引是奇数的所有元素,索引从0开始 集合元素 $("input:eq(1)")
:gt(index) 选取索引大于index的元素(index从0开始) 集合元素 $("input:gt(1)")
:lt(index) 选取索引小于index的元素(index从0开始) 集合元素 $("input:lt(1)")
:header 选取所有的标题元素,例如h1,h2,h3等等 集合元素 $(":header")选取网页中所有的h1,h2,h3
:animated 选取当前正在执行动画的元素 集合元素 $("div:animated")

表单对象属性过滤实例

选择器 描述 返回 示例
:input 选取所有的input,textarea,select,button 集合元素 $("input")
:text 选取所有单行文本框 集合元素 $(":text")
:password 选取所有密码框 集合元素 $(":password")
:radio 选取所有的单选框 集合元素 $(":radio")
:checkbox 选取所有的多选框 集合元素 $(":checkbox")
:submit 选取所有的提交按钮 集合元素 $(":submit")
:image 选取所有的图像按钮 集合元素 $(":image")
:reset 选取所有的重置按钮 集合元素 $(":reset")
:button 选取所有的按钮 集合元素 $(":button")
:file 选取所有的上传域 集合元素 $(":file")
:hidden 选取所有不可见元素 集合元素 $(":hidden")

jq中的DOM操作

DOM操作分为3个方面,DOM core, HTML-DOM,CSS-DOM
查找节点:通过jq选择器完成
查找属性节点:

attr()   //var title = $("#id").attr("title")

创建节点:

$(html)  //var li  = $("<li></li>");    $("ul").append(li)

插入节点:

append()
appendTo()
prepend()
prependTo()
after()
insertAfter()
before()
insertBefore()

复制节点:

clone()   //clone(true) 事件也复制

替换节点:

replaceWith()
replaceAll()   //两者效果一样,写法相反

包裹节点:

wrap()
wrapAll()   //两者区别如图
< strong title = "选择你最喜欢的水果.">你最喜欢的水果是? < / strong > 
< strong title = "选择你最喜欢的水果.">你最喜欢的水果是? < / strong > 
< ul > 
       < li title="苹果">苹果< / li >
       < li title="橘子">橘子< / li >
       < li title="菠萝">菠萝< / li >   
< / ul > 
如果使用wrap()方法包裹< strong >元素, jQuery 代码如下:
 $ ( " strong " ) .wrap ( " < b > < / b > " ) ;
将会得到如下结果:
 < b > <strong title = "选择你最喜欢的水果." >你最喜欢的水果是? < / strong > < / b >
 < b > < strong title="选择你最喜欢的水果." >你最喜欢的水果是? < / strong > < / b >

属性操作:

$("p").attr("title","you")  //设置单个属性
$("p").attr({"title":"you","name":"test"})  //设置单个属性
$("p").removeAttr("title")   //删除属性

样式操作:

//可以通过attr添加class属性
//addClass()
//removeClass()

$("a").toggle(function(){},function(){})    //toggle():交替一组动作

//hasClass()

设置和获取HTML、文本和值

html()
text()
val()

遍历节点:

children()
next()
prev()
siblings()   // 取得元素前后所有的同辈元素
 closest()  //取得最近的匹配元素

CSS-DOM操作

$("p").css("color") //获取样式颜色
$("p").css("color","red")  //设置单个样式
$("p").css({"color":"red","fontSize":"10px","background-color":"#000",borderRadius:"5px"})  //设置多个样式

事件和动画

加载DOM:

$(document).ready()   //DOM就绪时就可以调用  window.onload是页面所有元素包括关联文件都加载到浏览器才执行
$(funtion(){})   //前者的简写

事件绑定:

bind(type [,data] , fn)
//第一个参数是事件类型   blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error等,也可以是自定义名称
//第二个参数是可选参数,作为event.data属性值传递给事件对象的额外数据对象
//第三个参数是绑定的处理函数

click() //简写  mouseover()  ...
hover() //合成事件
toggle()  //合成事件

one()

unbind()

事件对象的属性:

even.type()  //事件类型
event.preventDefault() //阻止默认事件
event.stoPropagation() //阻止事件冒泡
even.target()  //获取触发事件的元素
event.relatedTarget() //获取触发事件的相关元素
event.pageX() 
event.pageY() 
event.which() //在鼠标单击事件中获取到鼠标的左、中、右键,
event.metaKey()   //获取ctrl按键
event.originalEvent()  //指向原始的事件对象

动画

show()
hide()
fadeIn()
fadeOut()
slideUp()
slideDown()
animate()

jq中的ajax

load()
$.get()
$.post()
$.getScript()
$.getJson()
$.ajax()

注意
( 1 ) jquery自动把 URL 里的回调函数,例如“ url ? callback = ? ”中的后一个“ ? " 替换为正确的函数名,以执行回调函数.
( 2 ) jsonp( JSON with Padding )是一个非官方的协议,它允许在服务器端集成 script tags 返回至客户端,通过 Javascript Callback 的形式实现跨域访问.由于 json 只是一种含有简单括号结构的纯文本,因此许多通道都可以交换 json 消息.而由于同源策略的限制,开发人员不能在与外部服务器进行通信的时候使用 XMLHttpRequest.而 JSONP是一种可以绕过同源策略的方法,即通过使用 JSON 与< script> 标记相结合的方法,从服务器端直接返回可执行的 Javascript 函数调用或者 Javascript 对象.目前 jsonp 已经成为各大公司的 web 应用程序跨域首选,例如 Youtube Gdata 、 Google social Graph 、 Digg 、豆瓣、 Del . icio . us 等.

$.ajax()参数详解

参数名称 类型 说明
url string 发送请求的地址,默认为当前页地址
type string 请求方式post或get,默认是get。其他请求方法put和delete也可以使用但仅部分浏览器支持
timeout number 请求超时时间(毫秒)。此设置会覆盖$.ajaxSetup()方法的全局设置
async Boolean 异步请求,默认为true
cache Boolean 默认为true(当dataType为script时,默认为false)。设置为false时不会从浏览器缓存中加载请求信息
data Object或String 发送的数据。如果不是字符串,自动转成字符串。对象必须是key/value格式。{foo1:"bar1","foo2":"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,jquery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2
dataType String 预期服务器返回的数据。如果不指定,将自动根据http包mime信息返回responseXML或responseText,并作为回掉函数参数传递。可用的类型如下。xml,html,script(返回纯文本javascript代码,不会自动缓存除非设置cache,在远程请求(不是同一个域名下)所有的post请求都将转为get请求),json,text,jsonp(使用jsonp形式调用函数时,例如myurl?callback=?,jq将自动替换后一个“?为正确函数名,以执行回调函数”)
beforSend function 请求前执行
complete function 请求完成后回调函数(无论成功或失败都执行)
success fucntion 请求成功后回调。由服务器返回后根据dataType参数进行处理的数据。内部this指向本次ajax请求时传递的options参数
error function 请求失败回调
contentType string 默认为“application/x-www-form-urlencoded”
dataFilter function 预处理函数,return处理后的数据
global Boolean 是否触发全局ajax事件,默认为true
ifModified boolean 默认为false.仅在服务器数据改变时获取数据。服务器数据改变判断的依据是Last-Modified头信息。默认false,即忽略头信息
jsonp String 在一个jsonp请求中重写回调函数的名字。钙质用来替代“callback=?”这种get或post请求中url参数里的“callback”部分,例如{jsonp:onJsonpLoad'}会导致将“onLoadpLoad=?”传给服务器
username String 用于响应http访问认证请求的用户名
password Sring 密码
processData Boolean 默认为true。默认情况下,发送的数据将被转化为对象以配合内容类型“application/x-www-form-urlencode”.如果要发送DOM树信息或者其他不希望转换的信息,请设置false
scriptCharset String 只有当请求时dataType为“jsonp”或者“script”,且type是get时才会用于强制修改字符集。通常在本地和远程的内容编码不同时使用

常用

$.each
each()
$.cookie()   //需要引入cookie插件
$.ajaxPrefilter   //jQuery.ajaxPrefilter()函数用于指定预先处理Ajax参数选项的回调函数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,552评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,666评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,519评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,180评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,205评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,344评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,781评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,449评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,635评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,467评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,515评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,217评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,775评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,851评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,084评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,637评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,204评论 2 341

推荐阅读更多精彩内容