jQuery事实上沿用了JavaScript的那一套东西,几乎全部方法都支持链式调用,也就是说方法能够一个接一个地执行。javascript
$('p') .addClass('new-class') .text("I'm a paragraph!") .appendTo('body');
要记住: 链式调用事后返回的仍是jQuery对象自己。php
遍历,就是从一个DOM元素移动到另外一个元素的行为。css
.eq()
.filter()
和.not()
.first()
和.last()
.has()
.is()
.slice()
.children()
.closest()
.find()
.next()
,.nextAll()
和.nextUntil()
.prev()
,.prevAll()
和.prevUntil()
.siblings()
.parent()
,.parents()
和.parentsUntil()
.add()
,注意在此刻该元素只存在于jQuery对象中,还没有添加到DOM树,所以还不能显示在页面上。.andSelf()
.contents()
.end()
注意:咱们在Google Chrome的控制台或者是FireBug的控制台里面对DOM所作的任何修改都是临时的。这意味着当刷新原始页面时,浏览器会重置全部的变动。之因此这样是由于JavaScript是一种客户端语言,脚本修改的并不是存放在服务器上的真实文件,而仅仅是浏览器对这个文件副本的解释。html
可是JavaScript是能够经过AJAX技术将修改保存到服务器的,这一技术能使JavaScript与服务器端语言(如PHP)协同工做。java
.append()
,在目标内容以前添加.prepend()
.appendTo()
,在目标内容以前追加.prependTo()
$("<p>", { "text":"I'm a new paragraph!", "css":{"background":"yellow"} }) .prependTo("body");
.after()
,在目标内容以前,目标元素以外添加.before()
.insertAfter()
,在目标内容以前,目标元素以外添加.insertBefore()
.wrap()
,注意,里面可加回调函数$("span").wrap(function(){ return $(this).is(".foo") ? "<strong>" : "<em>"; });
.unwrap()
.wrapAll()
会在DOM中移动元素,从而使得它们集中在一块儿。.wrapInner()
.remove()
和.detach()
方法用于从DOM中彻底删除一个元素。两个方法都从DOM中删除选中的元素,但.detach()
方法无缺地保存了被删除元素的数据,所以特别适合那些须要把删除元素挪到DOM其余位置的场合。.attr()
主要有两个功能:a.读取给定的属性;b.设置给定属性的值,这须要用属性名字做为它的第一个参数,再提供一个值做为它的第二个参数。.removeAttr()
.css()
.text()
和.html()
方法用于处理一个元素的内容,两者的不一样在于.html()
可以读取或设置HTML内容,而.text()
只能读取或设置文本内容。.val()
方法用于访问和修改表单元素的内容(值)。.data()
经过使用一种安全简单的方式把与元素有关的信息储存到jQuery对象中。(支持JSON格式).addClass()
用于添加属性,.removeClass()
用于删除属性,toggleClass()
用于属性轮转,即若是目标元素没有相应的class,它会添加它,若是已经有相应的class,它会删除它。.hasClass()
;.height()
,.width()
.innerHeight()
,.innerWidth()
,.outerHeight()
和outerWidth()
.map()和.each()jquery
.map()
和.each()
方法使得开发者可以使用回调函数对结果集内的每个元素单独处理,这个回调函数须要两个参数,即当前元素的索引和当前元素自己。ajax
两者的区别:.map()
方法返回的是一个包含回调函数返回值的新对象,而.each()
返回的是受回调函数影响后的原始jQuery对象。这意味着.each()
支持链式调用,而.map()
不支持。json
.show()
和.hide()
.fadeIn()
和.fadeOut()
。当调用这两个函数时,.fadeIn()
把元素的透明度从0调整到1,另外一个则从1调整到0.淡入和淡出轮流摇摆的函数.fadeTo()
.slideUp()
,.slideDown()
,摇摆的函数有.slideToggle()
.animate()
.delay()
,中止动画.stop()
.error()
.scroll()
方法。.ready()
是一个防止脚本执行过早从而避免异常的“保险”。这个方法会一直等到DOM准备好,能够接受处理时才触发它的处理程序。一个常见的习惯是把整个脚本作成一个回调函数传递给.ready()
函数:$(document).ready(function(){ //全部利用jQuery实现的功能都放在这里 });
此外,.ready()
方法也接受一个可选的参数,这个参数用来在此函数内做为jQuery函数的别名。这使你可以书写更安全的jQuery脚本,即便在已经使用jQuery.noConflict()
方法把$别名让给了其余框架的场合,你使用$符号的脚本也同样正常工做。数组
下面的代码老是能够保证你代码中的$别名可以正常工做:浏览器
jQuery.ready(function($){ //全部利用jQuery实现的功能都放在这里 $("p").fadeOut(); });
unload
事件。然而,对unload
事件的处理各个浏览器并不统一。所以,若要在生产环境使用这个事件,就必定要事先在不一样的浏览器环境中对脚本进行充分测试。.bind()
绑定,.unbind()
解除绑定。可用的事件有blur
,focus
,focusin
,focusout
,load
,resize
,scroll
,unload
,click
,dblclick
,mousedown
,mouseup
,mousemove
,mouseover
,mouseout
,mouseenter
,mouseleave
,change
,select
,submit
,keydown
,keypress
,keyup
和error
。.bind()
和.unbind()
,.live()
和.die()
也分别负责为元素绑定和删除事件处理函数。一个主要的不一样是,.live()
不但能绑定事件处理函数和JavaScript属性给页面上已有的元素,就连动态添加到DOM中的匹配元素也能(主动)绑定。.one()
方法的用法和.bind()
彻底相同,惟一的区别在于,.one()
绑定的事件处理函数,在事件触发一次后即被自动解除绑定。.toggle()
方法,有三种用法:一是.toggle()
方法容许开发者绑定两个或多个函数给click事件,这些函数在事件发生时会交替执行,非此即彼。
$("#bar") .toggle(function(){ console.log("Function 1"); }, function(){ console.log("Function 2"); }, function(){ console.log("Function 3"); });
接下来,用下面的代码切换段落p#bar的显示状态:
$("#bar").toggle();
二是能够用一个连续时间作它的第一个参数,它就会以动画的形式隐藏或显示元素。
$("#bar").toggle(2000);
最后,能够用一个布尔值作它的第一个参数能够控制元素的显示或隐藏。
$("#bar").toggle(true); $("#bar").toggle(false);
.trigger()
方法用来触发事件。这个方法的第一个参数是将被触发的事件名,第二个参数是一个可选的数组,用来传递给事件处理函数。$("#bar") .bind("click",function(){ console.log("Clicked!"); }) .trigger("click");
.trigger()
方法触发事件。可用的快捷方法有.blur()
,.focus()
,.focusin()
,.focusout()
,.load()
,.resize()
,.scroll()
,.unload()
,.click()
,.dblclick()
,.mousedown()
,.mouseup()
,.mousemove()
,.mouseover()
,.mouseout()
,.mouseenter()
,.mouseleave()
,.change()
,.select()
,.submit()
,.keydown()
,.keypress()
,.keyup()
和.error()
。
举个例子,下面的代码先绑定一个处理函数到click事件,而后触发这个事件:
$("#bar").click(function(){console.log("Clicked!"); }).click();
$.ajax()
接受一个参数:一个包含AJAX调用所需设置的对象。若是调用它却不作任何设置,这个方法会简单地载入当前页面而不作任何处理。
最经常使用的设置项目有如下参数能够设置:
如下是一个示例:
$.ajax({ "type":"POST", "url":"ajax.php", "data":"var1=val1&var2=val2", "success":function(data){ $("#bar") .css("background","yellow") .html(data); } });
$.ajaxSetup()
用于为AJAX请求设置默认选项。举例来讲,默认状况下,若所有AJAX请求都被用POST方式发到ajax.php,而且返回数据都用来填充段落#bar,则可使用下面的代码:
$.ajaxSetup({ "type":"POST", "url":"ajax.php", "success":function(data){ $("#bar") .css("background","yellow") .html(data); } });
如今,发起新的AJAX请求就容易多了,只须要传递新的数据:
$.ajax({ "data":{ "newvar1":"value1", "newvar2":"value2" } });
在以后的AJAX调用中,只要在调用选项中给出新的选项设置就可覆盖默认设置:
$.ajax({ "type":"GET", "data":{ "newvar1":"value3", "newvar2":"value4" } });
这些快捷方法都是$.ajax()
方法的简单封装,只不过有几个请求选项被设置成了固定值而已。
使用这些方法会有轻微的性能损失,由于本质上这些方法只是被设置好了参数,而后再由它调用$.ajax()。尽管如此,使用这些快捷方法带来的便利确实可以加快脚本的开发。
处理标准的GET和POST请求,用$.get()
和$.post()
方法最方便。两个方法都支持4个参数:请求URL,可选的参数(发给远程脚本的),可选的回调函数(当请求成功完成后执行)和一个可选的dataType设置。
当须要获取JSON数据时,使用$.getJSON()格外方便。它须要的参数有请求URL,可选的数据和可选的回调函数。
要演示这个方法的使用,咱们须要建立一个新的测试文件命名为json.php,而后插入如下数据:
{"var1":"value1","var2":"value2"}
而后经过jQuery获取:
$.getJSON("json.php", function(data){ $("#bar") .css("background","yellow") .html(data.var1+", "+data.var2); });
$.getScript()
方法用于加载外部脚本。它的第一个参数是请求URL,还有一个可选的回调函数(一般并不须要,由于脚本在加载完成后会自动执行)。新建一个测试文件script.php,而后添加以下内容:
alert("This script was loaded by AJAX!");
而后执行:
$.getScript("script.php");
这个函数支持三个一样的参数:目标URL,可选的数据和可选的回调函数(在当前元素的内容被替换之后执行)。