一、选择网页元素
jQuery
的基本设计和主要用法,就是”选择某个网页元素,然后对其进行某种操作”。这是它区别于其他函数库的根本特点。
使用jQuery
的第一步,往往就是将一个选择表达式,放进构造函数jQuery()(简写为$
),然后得到被选中的元素。
选择表达式可以是CSS选择器:
1 | $(document) //选择整个文档对象 |
也可以是jQuery特有的表达式:
1 | $('a:first') //选择网页中第一个a元素 |
二、改变结果集
如果选中多个元素,jQuery提供过滤器,可以缩小结果集:
1 | $('div').has('p'); //选择包含p元素的div元素 |
有时候,我们需要从结果集出发,移动到附近的相关元素,jQuery也提供了在DOM树上的移动方法:
1 | $('div').next('p'); //选择div元素后面的第一个p元素 |
三、链式操作
最终选中网页元素以后,可以对它进行一系列操作,并且所有操作可以连接在一起,以链条的形式写出来,比如:
1 | $('div').find('h3').eq(2).html('Hello'); |
分解开来,就是下面这样:
1 | $('div') //找到div元素 |
四、元素的操作:取值和赋值
操作网页元素,最常见的需求是取得它们的值,或者对它们进行赋值。
jQuery使用同一个函数,来完成取值(getter)和赋值(setter)。到底是取值还是赋值,由函数的参数决定。
1 | $('h1').html(); //html()没有参数,表示取出h1的值 |
常见的取值和赋值函数如下:
1 | .html() 取出或设置html内容 |
需要注意的是,如果结果集包含多个元素,那么赋值的时候,将对其中所有的元素赋值;取值的时候,则是只取出第一个元素的值(.text()
例外,它取出所有元素的text内容)。
五、元素的操作:移动
jQuery提供两组方法,来操作元素在网页中的位置移动。一组方法是直接移动该元素,另一组方法是移动其他元素,使得目标元素达到我们想要的位置。
假定我们选中了一个div元素,需要把它移动到p元素后面。
第一种方法是使用.insertAfter(),把div元素移动p元素后面:
1 | $('div').insertAfter($('p')); |
第二种方法是使用.after(),把p元素加到div元素前面:
1 | $('p').after($('div')); |
表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回div元素,第二种方法返回p元素。你可以根据需要,选择到底使用哪一种方法。
使用这种模式的操作方法,一共有四对:
1 | .insertAfter()和.after():在现存元素的外部,从后面插入元素 |
六、元素的操作:复制、删除和创建
除了元素的位置移动之外,jQuery还提供其他几种操作元素的重要方法。
复制元素使用.clone()。
删除元素使用.remove()和.detach()。两者的区别在于,前者不保留被删除元素的事件,后者保留,有利于重新插入文档时使用。
清空元素内容(但是不删除该元素)使用.empty()。
创建新元素的方法非常简单,只要把新元素直接传入jQuery的构造函数就行了:
1 | ('<p>Hello</p>'); |
七、工具方法
除了对选中的元素进行操作以外,还提供一些与元素无关的工具方法(utility)。不必选中元素,就可以直接使用这些方法。
工具方法即可给jquery使用,也可以给原生的js使用
常用的工具方法有以下几种:
1 | .trim() 去除字符串两端的空格。 |
八、事件操作
jQuery可以对网页元素绑定事件。根据不同的事件,运行相应的函数。
1 | $('p').click(function(){ |
目前,jQuery主要支持以下事件:
1 | .blur() 表单元素失去焦点。 |
以上这些事件在jQuery内部,都是.bind()
的便捷方式。使用.bind()
可以更灵活地控制事件,比如为多个事件绑定同一个函数:
1 | $('input').bind( |
有时,你只想让事件运行一次,这时可以使用.one()
方法。
1 | $("p").one("click", function() { |
.unbind()
用来解除事件绑定。
1 | ('p').unbind('click'); |
所有的事件处理函数,都可以接受一个事件对象(event object)作为参数,比如下面例子中的e:
1 | $("p").click(function(e) { |
这个事件对象有一些很有用的属性和方法:
1 | event.pageX 事件发生时,鼠标距离网页左上角的水平距离 |
在事件处理函数中,可以用this关键字,返回事件针对的DOM元素:
1 | $('a').click(function(e) { |
有两种方法,可以自动触发一个事件。一种是直接使用事件函数,另一种是使用.trigger()或.triggerHandler()。
1 | ('a').click(); |
九、特殊效果
最后,jQuery允许对象呈现某些特殊效果。
1 | $('h1').show(); //展现一个h1标题 |
常用的特殊效果如下:
1 | .fadeIn() 淡入 |
除了.show()
和.hide()
,所有其他特效的默认执行时间都是400ms(毫秒),但是你可以改变这个设置。
1 | $('h1').fadeIn(300); // 300毫秒内淡入 |
在特效结束后,可以指定执行某个函数。
1 | $('p').fadeOut(300, function() { $(this).remove(); }); |
更复杂的特效,可以用.animate()自定义。
1 | $('div').animate( |
.stop()和.delay()用来停止或延缓特效的执行。
$.fx.off如果设置为true,则关闭所有网页特效。
本文主要来源于:
http://www.ruanyifeng.com/blog/2011/07/jquery_fundamentals.html