Write Less,Do More
从最基本DOM操作开始。
jQuery的命令都由四个部分组成:$,selector,action,parmaeters组成,如:$('P').css('color','red');
通常一个命令中包含几件事:
那么,上面那条命令实际上就是:
当然一提到选择器,就必须提到DOM树。
DOM意为文档对象模型,是HTML表示对象的一种标准方式,是HTML标签的层级化表示。
简单来说,在这个层次中,每个元素都有一个父元素,也可以有一个或多个子元素。每个元素都可以有一个id和一个或多个class。
在这里只是简单提到DOM,需要深入了解的话,可以去看《JavaScript DOM 编程艺术》。
$("*")
$("#id1")
$(".class_name")
$("element1")
$(".class,p,div")
$(".father_div div")
$(".father_div>div")
$(".father_div+div")
$(".father_div~div")
$("div:first")
$("div:last")
$("div:eq(n)")
$("div:lt(n)")
$("div:gt(n)")
$("div:even")
$("div:odd")
$(":focus")
$(":animated")
$("[id='idA']")
$("[name='img_list']")
$("[href]")
$("a[target='_blank']")
选取所有的target属性值不等于”_blank”的 标签:$("a[target!='_blank']")
$("input:checked")
$(":input")
$(":text")
$(":password")
$("radio")
$("checkbox")
$("submit")
$("reset")
$("button")
$("file")
$("li").eq(n)
$("li").first()
$("ul li").hasclass("test")
$("div").children(".divA")
$("div").find(".divB")
$(".classA").next()
$(".classA").nextAll()
$(".classA").nextUntil("classB")
不含classB$(".classA").prev()
$(".classA").prevAll()
$(".classA").prevUntil(classB)
$(".classA").siblings()
$(".classA").parent()
$(".classA").parents()
$(".classA").parentsUntil()
以$('HTML标签')
构成,例如:
选择行: $('tr')
选择段落: $('div')
选择标题: $('h1')
选择输入框: $('input')
用一张表格举例,如下图:
Html Markup
1 | <div id="table-zebra"> |
假设有多个表格,而只需要选择这整个表格,可以根据id或class来选择:
按id选择,在#号后加元素的id,并将其作为字符串传入jQuery函数: $('#celebs')
按class选择,在句点(.)后加元素的类名(class),并将其作为字符串传入jQuery函数: $('.data')
可以根据层级关系,进一步选择元素。祖先和后代之间留一空格即可。
假设想要选择到这个表格的行,可以这样写$('#celebs tr')
加到要筛选的项目上,以冒号(:)进行定义,其后接筛选器的名称。
再进一步,假设我们想选择这个表格的偶数行,$('#celebs tr:even')
even: 保留选择器中索引号为偶数的元素,删除其余元素
添加和删除样式、类及其他
访问CSS,读取classA的字体大小:$('.classA').css('font-size)
修改CSS,设置classA的字体大小:$('.classA').css('font-size','12px')
移除CSS,移除div的oldCss类:$('div').removeClass('oldCss')
添加CSS,添加div的newCss类;$('div').addClass('newCss')
切换CSS,切换div的toggleCss类;$('div').toggleClass('toggleCss')
添加或者移除CSS类:如果CSS类已经存在,它将被移除;相反,如果CSS类不存在,它将被加上
在将上一节提到的表格改造成斑马条纹的,形如:
1 | // 将表格中的偶数行的背景颜色设置为#ddd |
如果需要设置的属性很多,一条条代码来写显然非常麻烦和繁琐。jQuery提供了一种一颗同时设置多个属性的方法,即使用对象字面量。对象字面量封装在尖括号内,里面的每个键和值之间用冒号分隔,每对键值之间用逗号分隔,例如:
1 | $('celebs tbody tr:even').css({ |
通常并不推荐在HTML/CSS使用内联样式,为了保持代码整洁、便于维护、通常会使用外联样式。这一点在使用就jQuery的时候也同样适用。在这一节,我们将样式放在样式表内,通过添加和删除类来达到同样的效果。
首先在HTML内添加一个CSS文件的链接:
Html Markup
1 | <head> |
然后将新规则添加到新的CSS文件中:
zebra.css
1 | .zebra{ |
最后,回到JavaScript文件中,添加CSS类:
1 | $("#table-zebra table tbody tr:even").addClass('zebra'); |
当然要删除的话也特别简单:
1 | $("#table-zebra table tbody tr:even").removeClass('zebra'); |
故名思意,用于处理事件。事件是在网页发生的操作,当事件发生时,我们称此为触发了事件,当我们编写代码处理事件时,我们称此为捕获了事件。
hide()
hide()
toggle()
$('<p>A new paragraph!</p>')
insertAfter('#idA')
将元素插入在id为idA的元素后面。insertBefore('#idB')
将元素插入在id为idB的元素前面。prependTo('idC')
将元素作为id为idC的子元素插入到最前面。appendTo('idD')
将元素作为id为idD的子元素插入到最后面。删除元素:remove()
修改内容:
html()
text()
要达成的效果如图一:
首先,我们创建一个结构如图的html文件,并且引入jQuery文件和我们自定义的js文件。
然后我们添加一个按钮:
Js File
1 | $(document).ready(function () { |
然后我们为这个按钮添加click事件,让其点击之后就将免责声明隐藏:
Js File
1 | $('#hideButton').click(function () { |
文件隐藏后再点击按钮就显示免责声明:
Js File
1 | $(document).ready(function () { |
is操作接受传递给jQuery函数的任何选择器,检查它们与调用元素是否匹配
this引用了jQuery函数选择的元素
现在效果如图二:
但实际上,jQuery有切换的函数:
1 | $(document).ready(function () { |
添加一些特效(之后的文章会详细说明)
1 | $(document).ready(function () { |
参考资料:《jQuery从菜鸟到忍者》