现在让我们开始学习最流行的JavaScript框架jQuery吧。至于JavaScript,不用担心,我们很快就会涉及到它。
在我们开始学习使用jQuery之前,需要在HTML文件中添加一些代码。
任务:首先,在页面顶部添加一行script
元素,然后在下一行写上结束符。
浏览器会运行
scrip
t里所有的Javascript,包括jQuery。
在你的script
元素里,添加这段代码:$(document).ready(function() {
到你的script
中,然后在下一行用});
结束它。
接下来我们将学习如何写
function
,需要注意的是,function
里面的代码会在浏览器加载页面后立即运行。这很关键,因为在没有
document ready function
以前,你的代码可能会在HTML渲染完成之前就执行了,这样会产生bug。
jQuery Playground
#left-well
#right-well
现在,我们已经了解了document ready function
。
接下来,让我们开始写第一个jQuery语句,所有jQuery方法都是以$
开头,通常称为 美元符号
,或者简称为bling
。
jQuery通过选择器
来选择一个HTML元素,然后对元素做些改变。
任务:例如,要让所有的button
元素有弹回效果,只要把这段代码写在document ready function
里面就可以了:
$("button").addClass("animated bounce");
注意,我们已经在后台为你引入了jQuery库和Animate.css库,你可以在编辑器里直接使用这两个库,从而通过jQuery给button
元素添加Animate.css的bounce
回弹动画效果。
另外,请务必使用$("button").addClass("animated bounce");
,而不是$('button').addClass("animated bounce");
,因为单引号选择器无法通过我们的测试。
jQuery Playground
#left-well
#right-well
你已经了解我们是怎么给所有的button
做弹回效果了吗?
我们用
$("button")
来选择按钮,然后用.addClass("animated bounce")
给按钮加CSS class。
你只需要用jQuery的.addClass()
方法,就可以给元素加class了。
任务:首先,让我们使用$(".well")
来获取所有带有well
class的div
元素。
注意,像使用CSS声明一样,你需要在class的名称前面添加一个.
然后使用jQuery的.addClass()
方法添加2个class:animated
和shake
。
例如,你可以将下面的代码写在document ready function
里,给所有具有text-primaryclass
的元素添加animated
和shake
:
$(".text-primary").addClass("animated shake");
jQuery Playground
#left-well
#right-well
你还可以根据id属性来获取元素。
任务:首先,使用$("#target3")
选择器来选择id为target3
的button
元素。
注意,就像CSS声明一样,在id的名称前加上一个#
。
然后使用jQuery的.addClass()
方法来添加animated
和fadeOut
class。
以下是给id为target6
的button
元素添加fade out效果的代码:
$("#target6").addClass("animated fadeOut")
jQuery Playground
#left-well
#right-well
这些动画最初是很cool的,但现在显得有点散乱。
任务:在你的document ready function
里删掉那三条jQuery方法语句,只保留document ready function
。
jQuery Playground
#left-well
#right-well
现在你已经了解了三种获取元素的方式:type选择器$("button")
、class选择器$(".btn")
、id选择器$("#target1")
。
尽管只用.addClass()
就可以添加不同的class,但我们还是来尝试用三种不同的方式给同一元素添加class吧。
任务:使用.addClass()
方法和上述三种jQuery选择器,分别给同一元素添加class:
给所有type为button
的元素添加animated
class。
给所有class为.btn
的按钮添加shake
class。
给所有id为#target1
的按钮添加btn-primary
class。
注意:
你应该每次只获取一个元素并只添加一个class。最终,三个选择器会分别将animated
,shake
和btn-primary
三个class添加到#target1
元素中。
jQuery Playground
#left-well
#right-well
你可以通过jQuery的addClass()
方法给元素添加class,同样的,也可以通过jQuery的removeClass()
方法删除元素的class。
以下是对button元素执行的操作:
$("#target2").removeClass("btn-default");
任务:让我们来把所有button
元素上的btn-defaultclass
移除掉。
jQuery Playground
#left-well
#right-well
我们可以直接通过jQuery来改变HTML元素的CSS样式。
jQuery有一个叫做.css()
的方法,能让你改变元素的CSS样式。
以下代码显示如何将颜色改变成蓝色:
$("#target1").css("color", "blue");
这跟一般的CSS语法有点不同,因为这里的CSS属性和值是在引号内的,并且用逗号分开,而不是冒号。
任务:删除你的jQuery选择器,把document ready function
清空。
选择target1
并将其颜色变成红色。
jQuery Playground
#left-well
#right-well
你还可以用jQuery改变HTML元素的非CSS的属性。比如,你可以禁用按钮。
当你把按钮设置成禁用以后,按钮会变灰并且不能点击。
jQuery有一个.prop()
的方法,可以让你来调整元素的属性。
以下代码显示如何禁用所有按钮:
$("button").prop("disabled", true);
任务:来尝试只让target1
按钮禁用。
jQuery Playground
#left-well
#right-well
jQuery不仅可以改变HTML元素开始和结束标签之间的文本,还可以改变HTML元素标记本身。
jQuery有一个.html()
方法,可以让你在元素中添加HTML标签和文字,而元素中之前的内容都会被方法中的内容所替换掉。
以下代码显示如何重写和强调标题文本(使用em
标签):
$("h3").html("jQuery Playground");
jQuery 还有一个类似的方法叫.text()
,它只能改变文本但不能添加标签。换句话说,这个方法只会把任何传进来的HTML标签当成你想替换现有内容的文本。
任务:强调id为target4
按钮里的文本。
jQuery Playground
#left-well
#right-well
现在让我们用jQuery从页面中删除一个HTML元素。
jQuery 有一个.remove()
的方法,可以彻底删除一个HTML元素。
任务:使用.remove()
方法来删除页面中的target4
元素。
jQuery Playground
#left-well
#right-well
现在让我们尝试把元素从一个div
里移动到另外一个div
里。
jQuery有一个appendTo()
方法,可以让你把选中的HTML元素附加到其他元素中。
比如,我们想让target4
从right-well
移动到left-well
,我们用以下代码:
$("#target4").appendTo("#left-well");
任务:尝试把target2
元素从left-well
移动到right-well
。
jQuery Playground
#left-well
#right-well
除了移动元素,你还可以将元素从一个地方复制到另一个地方。
jQuery有一个clone()
方法,可以复制元素。
例如,如果我们想把target2
从left-well
复制到right-well
,我们用以下代码:
$("#target2").clone().appendTo("#right-well");
你有没有注意到上面是将两个jQuery方法合在一起使用了?这种叫方法链function chaining
,它是jQuery的一种便捷方式。
任务:复制target5
元素并将其附加到left-well
。
jQuery Playground
#left-well
#right-well
.clong()只是负责克隆,与.append()结合使用链,才是将克隆的插入到某个地方
每个HTML元素都有一个parent
元素,并从中继承属性。
例如,你的jQuery Playground中的 jQuery有一个 以下例子显示如何使用 任务:尝试设定 许多HTML元素都有 例如,每个HTML元素都是 jQuery有一个 以下例子显示如何使用children()方法设置 任务:尝试设置 你已经看到了用jQuery选择器通过id属性来获取元素的是非常方便的,但你不可能总是写这么整齐的id。 幸运的是,jQuery有一些另外的技巧来获取正确的元素。 jQuery用CSS选择器来获取元素, 以下代码显示如何给jQuery Playground中的每个井中(left well和right well)的第三个子元素添加bounce类: 任务:尝试给每个井中的第二个子元素添加bounce类,使用 :nth-child(n)属于其父元素的第n个子元素 你还可以获取所有偶数元素。 以下代码显示如何通过 注意,jQuery里的索引是从0开始的,也就意味着会与直觉相反 任务:尝试选择所有的偶数元素(索引为0、2、4……),并给它们添加 我们已经进行了这么久的jQuery Playground,是时候结束它了。 jQuery也可以获取 以下代码显示如何让整个body有淡出效果: 任务:让我们做一些更为激动人心的事情,给h3
元素的父元素是body
。
parent()
方法,可以允许你访问选定元素的父元素。parent()
设定left-well
元素的父元素的背景色为蓝色:$("#left-well").parent().css("background-color", "blue")
#target1
元素的父元素的背景色为红色。
jQuery Playground
#left-well
#right-well
jQuery使用children()操作子级元素
children
(子元素),子元素从父元素那里继承属性。body
的子元素,你的jQuery Playground中的h3
元素是children()
方法,可以让你访问选定元素的子元素。left-well
元素的子元素的文本颜色为蓝色:$("#left-well").children().css("color", "blue")
#right-well
元素的所有子元素的文本颜色为橙色。
jQuery Playground
#left-well
#right-well
jQuery使用target:nth-child(n) CSS选择器获取子元素
target:nth-child(n)
CSS选择器允许你通过目标类或元素类型选择目标元素的所有子元素。$(".target:nth-child(3)").addClass("animated bounce");
target
类来获取目标元素的子元素。
jQuery Playground
#left-well
#right-well
jQuery使用选择器操作偶数索引元素
target
class获取所有奇数元素,并给它们添加class:$(".target:odd").addClass("animated shake");
::odd
选择的是第2、4、6……个元素,因为索引是1、3、5……。animated
和shake
class。
jQuery Playground
#left-well
#right-well
使用jQuery修改整个页面
body
元素。$("body").addClass("animated fadeOut");
body
元素添加animated
和hingeclass
。
jQuery Playground
#left-well
#right-well