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参数选项的回调函数