元素
jQuery.filter(expr),比如$("div").filter(".middle"),会从div元素中筛选出属于middle的class的元素;再比如$("p").filter(".selected, :first"),会取出是selected类,或者是第一个元素的
元素,这个可以用$("p.class, p:first")来代替
这个方法,会从初始的结果集中,筛选保留一部分
jQuery.filter(fn),类似于上一个函数,可以传进去一个function,用这个function的返回值,进行筛选
function callback(index){
// index == position in the jQuery object
// this means DOM Element
return boolean;
}
jQuery.not(expr),是和filter(expr)相反的方法,不是和is(expr)相反的方法。该方法把满足expr的元素给排除掉,比如$("div").not(".green, #blue"),把class是green或者id是blue的元素过滤掉
jQuery.slice(start, end),从jQuery对象集合中选出一段
11、在jQuery对象之间查找
jQuery.parent(expr),找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(".class")
jQuery.parents(expr),类似于jQuery.parent(expr),但是是查找所有祖先元素,不限于父元素
jQuery.children(expr),返回所有子节点,和parents()方法不一样的是,这个方法只会返回直接的孩子节点,不会返回所有的子孙节点
jQuery.contents(),返回下面的所有内容,包括节点和文本。这个方法和children()的区别就在于,包括空白文本,也会被作为一个jQuery对象返回,children()则只会返回节点
jQuery.prev(),返回上一个兄弟节点,不是所有的兄弟节点
jQuery.prevAll(),返回所有之前的兄弟节点
jQuery.next(),返回下一个兄弟节点,不是所有的兄弟节点
jQuery.nextAll(),返回所有之后的兄弟节点
jQuery.siblings(),返回兄弟姐妹节点,不分前后
jQuery.add(expr),往既有的jQuery对象集合中增加新的jQuery对象,例子:$("div").add("p")
jQuery.find(expr),跟jQuery.filter(expr)完全不一样。jQuery.filter()是从初始的jQuery对象集合中筛选出一部分,而jQuery.find()的返回结果,不会有初始集合中的内容,比如$("p").find("span"),是从
元素开始找,等同于$("p span")
12、串联方法
jQuery.andSelf(),把最后一次查询前一次的集合,也增加到最终结果集中,比如$("div").find("p").andSelf(),这样结果集中包括所有的和
。如果是$("div").find("p"),那就只有
,没有
jQuery.end(),把最后一次查询前一次的集合,作为最终结果集,比如$("p").find("span").end(),这样的结果集,是所有的
,没有
13、DOM文档操作方法
jQuery.append(content),这个方法用于追加内容,比如$("div").append("hello");
jQuery.appendTo(selector),这个方法和上一个方法相反,比如$("hello").appendTo("#div"),这个方法其实还有一个隐藏的move作用,即原来的元素被移动了
jQuery.prepend(content),跟append()方法相对应,在前面插入
jQuery.prependTo(selector),跟上一个方法相反
jQuery.after(content),在外部插入,插入到后面,比如$("#foo").after("hello");
jQuery.insertAfter(selector),和上一个方法相反,比如$("hello").insertAfter("#foo");
jQuery.before(content),在外部插入,插入到前面
jQuery.insertBefore(selector),跟上一个方法相反
jQuery.wrapInner(html),在内部插入标签,比如$("p").wrapInner("");
jQuery.wrap(html),在外部插入标签,比如$("p").wrap(""),这样的话,所有的都会被各自的
包裹
jQuery.wrapAll(html),类似上一个,区别在于,所有的
会被同一个
包裹
jQuery.replaceWith(content),比如$(this).replaceWith("
"+$(this).text()+"
");
jQuery.replaceAll(selector),比如$("
hello
").replaceAll("p");
jQuery.empty(),比如$("p").empty(),这样的话,会把
下面的所有子节点清空
jQuery.remove(expr),比如$("p").remove(),这样的话,会把所有
移除,可以用表达式做参数,进行过滤
jQuery.clone(),复制一个页面元素
14、CSS相关方法
jQuery.css(name),获取一个css属性的值,比如$("p").css("color")
jQuery.css(object),设置css属性的值,比如$("p").css({"color":"red","border":"1px red solid"});
jQuery.css(name,value),设置css属性的值,比如$("p").css("color","red");
15、位置计算相关方法
jQuery.scrollLeft(),设置滚动条偏移,这个方法对可见元素或不可见元素都生效
jQuery.scrollTop(),设置滚动条偏移,这个方法对可见元素或不可见元素都生效
jQuery.offset(),计算偏移量,返回值有2个属性,分别是top和left
jQuery.position(),计算位置,返回值也有2个属性,top和left
16、宽度和高度计算相关方法
这组方法需要结合CSS的盒子模型来理解,margin始终不参与计算
jQuery.height(),这个方法计算的是content
jQuery.innerHeight(),这个方法计算的是content+padding
jQuery.outerHeight(),这个方法计算的是content+padding+border
jQuery.width();
jQuery.innerWidth();
jQuery.outerWidth();
17、页面加载完成事件
$(document).ready(function(){}),可以简写为$(function(){})
18、事件绑定方法
jQuery.bind(type,data,fn)
bind()方法可以接受3个参数,第1个是事件类型,类型是string,可能的值有blur, focus, load, resize, scroll, unload, beforeunload, click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout, mouseenter, mouseleave, change, select,
submit, keydown, keypress, keyup, error
第3个参数是当事件发生时,要执行的函数,函数原型是
function callback(eventObject) {
this; // dom element
}
在这个方法里return false会阻止事件冒泡并中止默认行为,如果在这个方法里调用eventObject.preventDefault()则会中止默认行为,如果在这个方法里调用eventObject.stopPropagation()则只会阻止事件冒泡
第2个参数是可选的,会赋值给e.data,比如
function handler(event) {
alert(event.data.foo);
}
$("p").bind("click", {foo: "bar"}, handler)
jQuery.one(type,data,fn),这个方法类似于bind()方法,区别在于只会绑定一次
jQuery.unbind(type,fn),解除绑定
jQuery.trigger(event,data),触发事件,要注意这个方法,同样会引起浏览器的默认行为,比如submit
另外,这个方法如果和bind()方法里定义的handler配合使用,可以更加灵活地传递参数,比如
$("#test").bind("click", {name : "kyfxbl"}, function(e, foo) {
alert(e.data.name);
alert("foo: " + foo);
});
以上代码,如果直接点击#test,则foo的值是undefined
但是如果通过$("#test").trigger("click",["foo"])来触发,则参数foo会被赋值为"foo"
jQuery.triggerHandler(event,data),这个方法和trigger()方法十分相像,主要有2点不同,1是这个方法不会触发浏览器的默认行为,2是它只会在jQuery对象集合的第一个元素上触发
jQuery.live(type,fn),这个方法十分类似jQuery.bind()方法,区别在于这个方法对后来才添加进来的元素同样有效
jQuery.die(type,fn),这个是jQuery.live()的相反方法
19、事件快捷方法
jQuery.hover(over,out),这个方法是mouseenter和mouseleave的便捷方法,2个参数的函数原型是:
function callback(eventObject) {
this; // dom element
}
jQuery.toggle(fn,fn2,fn3,...),这个方法是多次点击的便捷方法,参数的函数原型是:
function callback(eventObject) {
this; // dom element
}
jQuery提供了两类便捷方法:
第一类是类似于click()这种,相当于简化的jQuery.trigger()方法,比如$("p").click()相当于$("p").trigger("click"),不过该方法,无法像完整的jQuery.trigger("click", data)方法一样,传递一个附带的参数
第二类是类似于click(function)这种,相当于简化的jQuery.bind()方法,比如$("p").click(function)相当于$("p").bind("click",function),不过该方法,无法像完整的jQuery.bind("click", data, func)一样,传递一个额外的参数
20、切换元素显示与否的方法
jQuery.toggle(),原本显示的元素会不显示,原本不显示的会显示出来。这些元素可以是通过show()和hide()切换的,也可以是通过display:none来设置的
jQuery.show(),显示元素
jQuery.hide(),隐藏元素
jQuery.show(speed, callback),类似于上面的jQuery.show(),不过可以设置速度以及回调函数
speed可以是"slow"、"normal"、"fast",也可以是毫秒数
callback函数的原型是:
function callback() {
this; // dom element
}
jQuery.hide(speed, callback)
jQuery.toggle(speed, callback)
21、页面一些特效方法
jQuery.slideDown(speed, callback),让一个元素下滑,从无到有
jQuery.slideUp(speed, callback),让一个元素上升,从有到无
jQuery.slideToggle(speed, callback),切换一个下滑和上升
jQuery.fadeIn(speed, callback),淡入效果
jQuery.fadeOut(speed, callback),淡出效果
jQuery.fadeTo(speed, opacity, callback),变淡效果
22、ajax相关方法
$.ajax(options),这个是底层方法,上层的$.get()和$.post()都是基于此方法的封装
options:
async:是否异步,默认为true
url:目标地址
type:请求类型,可以是"POST"或者"GET"
data:请求参数,比如"name=kyfxbl&location=shenzhen"
complete(function):请求结束后的回调函数,函数原型是
function (XMLHttpRequest, textStatus) {
this; // the options for this ajax request
}
success(function):请求成功后的回调函数,函数原型是
function (data, textStatus) {
// data could be xmlDoc, jsonObj, html, text, etc...
this; // the options for this ajax request
}
例子:
$.ajax({
url : "user/ajax",
type : "GET",
data : "name=kyfxbl&location=shenzhen",
success : function(data, textStatus) {
alert(data);
alert(this.success);
}
});
$.get(url, data, callback, type),$.ajax()的简易方法,用于发送GET请求
url:请求地址
data:发送到服务端的请求参数
callback:请求成功后的回调函数,函数原型是:
function (data, textStatus) {
// data could be xmlDoc, jsonObj, html, text, etc...
this; // the options for this ajax request
}
$.post(url, data, callback, type),$.ajax()的简易方法,跟$.get()差不多,用于发送POST请求
23、浏览器及特性检测
$.support,可以检测当前浏览器是否支持下列属性,返回boolean。包括boxModel、cssFloat、opacity、tbody等
$.browser,检测当前浏览器类型,返回一个map,其中可能的值有safari、opera、msie、mozilla
24、数据缓存方法
该类方法是jQuery.data()方法和jQuery.removeData()的另一种形式,增加的elem参数是DOM Element
$.data(elem, name),取出elem上name的值
$.data(elem, name, value),设置elem上name的值为value
$.removeData(elem, name),删除elem上的name
$.removeData(elem),删除elem上的所有缓存数据
25、工具方法
$.isArray(obj),检测一个对象是否是数组
$.isFunction(obj),检测一个对象是否是函数
$.trim(str),去除string的空格
$.inArray(value, array),返回value在array中的下标,如果没有找到则返回-1,比如$.inArray(123, ["john",1,123,"f"])将会返回2
$.unique(array),去除array中的重复元素,该方法只对DOM Element有效,对string和number无效