jQuery环境搭建

慕课网

jQuery HelloWorld

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>第一个简单的jQuery程序</title>
<style type="text/css">
div{
padding:8px 0px;
font-size:12px;
text-align:center;
border:solid 1px #888;
}
</style>
<script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("div").html("您好!通过慕课网学习jQuery才是最佳的途径。");
});
</script>
</head>
<body>
<div></div>
</body>
</html>

jQuery对象和DOM对象

DOM对象

1
2
3
var p = document.getElementById('imooc');
p.innerHTML = '您好!通过慕课网学习jQuery才是最佳的途径';
p.style.color = 'red';

jQuery对象

1
2
var $p = $('#imooc');
$p.html('您好!通过慕课网学习jQuery才是最佳的途径').css('color','red');

jQuery对象转化成DOM对象

数组的索引是从0开始的,也就是第一个元素下标是0

1
2
3
<div>元素一</div>
<div>元素二</div>
<div>元素三</div>
1
2
3
var $div = $('div') //jQuery对象
var div = $div[0] //转化成DOM对象
div.style.color = 'red' //操作dom对象的属性

数组的索引是从0开始的,也就是第一个元素下标是0

还可以用jQuery自带的get()方法

1
2
3
var $div = $('div') //jQuery对象
var div = $div.get(0) //通过get方法,转化成DOM对象
div.style.color = 'red' //操作dom对象的属性

DOM对象转化成jQuery对象

如果传递给$(DOM)函数的参数是一个DOM对象,jQuery方法会把这个DOM对象给包装成一个新的jQuery对象

1
2
3
4
var div = document.getElementsByTagName('div'); //dom对象
var $div = $(div); //jQuery对象
var $first = $div.first(); //找到第一个div元素
$first.css('color', 'red'); //给第一个元素设置颜色

如果是想设置第二个,第三个颜色,则需要改成下列代码

1
2
3
var div = document.getElementsByTagName('div'); //dom对象
var $div = $(div); //jQuery对象
$div.eq(1).css('color','red'); //给第2个元素设置颜色,依次类推,eq(2)是第三个元素

jQuery第一天学习结束


jQuery选择器

id选择器

1
$( "#id" )

类选择器

1
$( ".class" )

元素选择器

1
$( "element" )  //根据给定(html)标记名称选择所有的元素

全选择器

1
$( "*" )

层选择器

子元素 后代元素 兄弟元素 相邻元素

特殊选择器this

jQuery做法

1
2
3
4
5
$('p').click(function(){
//把p元素转化成jQuery的对象
var $this= $(this)
$this.css('color','red')
})

详情点击jQuery选择器之特殊选择器this

基本筛选选择器

示例:

1
2
$(".div:first")
$(".aaron:eq(2)")

注意jQuery合集都是从0开始索引

内容筛选选择器

注意事项:

  • :contains与:has都有查找的意思,但是contains查找包含“指定文本”的元素,has查找包含“指定元素”的元素

  • 如果:contains匹配的文本包含在元素的子元素中,同样认为是符合条件的。

  • :parent与:empty是相反的,两者所涉及的子元素,包括文本节点

可见性筛选选择器

:hidden选择器,不仅仅包含样式是display=”none”的元素,还包括隐藏表单、visibility等等

虽然我还不知道是啥意思,先记录一下

属性筛选选择器

1
2
[attr="value"]能帮我们定位不同类型的元素,特别是表单form元素的操作,比如说input[type="text"],input[type="checkbox"]等
[attr*="value"]能在网站中帮助我们匹配不同类型的文件

子元素筛选选择器

注意事项:

  • :first只匹配一个单独的元素,但是:first-child选择器可以匹配多个:即为每个父级元素匹配第一个子元素。这相当于:nth-child(1)

  • :last 只匹配一个单独的元素, :last-child 选择器可以匹配多个元素:即,为每个父级元素匹配最后一个子元素

  • 如果子元素只有一个的话,:first-child与:last-child是同一个

  • :only-child匹配某个元素是父元素中唯一的子元素,就是说当前子元素是父元素中唯一的元素,则匹配

  • jQuery实现:nth-child(n)是严格来自CSS规范,所以n值是“索引”,也就是说,从1开始计数,:nth-child(index)从1开始的,而eq(index)是从0开始的

  • nth-child(n) 与 :nth-last-child(n) 的区别前者是从前往后计算,后者从后往前计算

单元素选择器

注意事项:

除了input筛选选择器,几乎每个表单类别筛选器都对应一个input元素的type值。大部分表单类别筛选器可以使用属性筛选器替换。比如 $(‘:password’) == $(‘[type=password]’)

表单对象属性筛选选择器

注意事项:

  • 选择器适用于复选框和单选框,对于下拉框元素, 使用 :selected 选择器

  • 在某些浏览器中,选择器:checked可能会错误选取到

jQuery的属性与样式

.attr()与.removeAttr()

每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息。如:在img元素中,src就是元素的特性,用来标记图片的地址。jQuery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到attr()

attr()有4个表达式

  • attr(传入属性名):获取属性的值

  • attr(属性名, 属性值):设置属性的值

  • attr(属性名,函数值):设置属性的函数值

  • attr(attributes):给指定元素设置多个属性值,即:{属性名一: “属性值一” , 属性名二: “属性值二” , … … }

.removeAttr( attributeName ) : 为匹配的元素集合中的每个元素中移除一个属性(attribute)

html()及.text()

.html()方法

获取集合中第一个匹配元素的HTML内容 或 设置每一个匹配元素的html内容,具体有3种用法:

  • .html() 不传入值,就是获取集合中第一个匹配元素的HTML内容

  • .html( htmlString ) 设置每一个匹配元素的html内容

  • .html( function(index, oldhtml) ) 用来返回设置HTML内容的一个函数

.html()方法内部使用的是DOM的innerHTML属性来处理的,所以在设置与获取上需要注意的一个最重要的问题,这个操作是针对整个HTML内容(不仅仅只是文本内容)

.text()方法

得到匹配元素集合中每个元素的文本内容结合,包括他们的后代,或设置匹配元素集合中每个元素的文本内容为指定的文本内容。,具体有3种用法:

  • .text() 得到匹配元素集合中每个元素的合并文本,包括他们的后代

  • .text( textString ) 用于设置匹配元素内容的文本

  • .text( function(index, text) ) 用来返回设置文本内容的一个函数

.text()结果返回一个字符串,包含所有匹配元素的合并文本

.html与.text的异同:

  • .html与.text的方法操作是一样,只是在具体针对处理对象不同

  • .html处理的是元素内容,.text处理的是文本内容

  • .html只能使用在HTML文档中,.text 在XML 和 HTML 文档中都能使用

  • 如果处理的对象只有一个子文本节点,那么html处理的结果与text是一样的

  • 火狐不支持innerText属性,用了类似的textContent属性,.text()方法综合了2个属性的支持,所以可以兼容所有浏览器

.val()

jQuery中有一个.val()方法主要是用于处理表单元素的值,比如 input, select 和 textarea。

.val()方法

  • .val()无参数,获取匹配的元素集合中第一个元素的当前值

  • .val( value ),设置匹配的元素集合中每个元素的值

  • .val( function ) ,一个用来返回设置值的函数

    注意事项:

  • 通过.val()处理select元素, 当没有选择项被选中,它返回null

  • .val()方法多用来设置表单的字段的值

  • 如果select元素有multiple(多选)属性,并且至少一个选择项被选中, .val()方法返回一个数组,这个数组包含每个选中选择项的值

.html(),.text()和.val()的差异总结:

  • .html(),.text(),.val()三种方法都是用来读取选定元素的内容;只不过.html()是用来读取元素的html内容(包括html标签),.text()用来读取元素的纯文本内容,包括其后代元素,.val()是用来读取表单元素的”value”值。其中.html()和.text()方法不能使用在表单元素上,而.val()只能使用在表单元素上;另外.html()方法使用在多个元素上时,只读取第一个元素;.val()方法和.html()相同,如果其应用在多个元素上时,只能读取第一个表单元素的”value”值,但是.text()和他们不一样,如果.text()应用在多个元素上时,将会读取所有选中元素的文本内容。

  • .html(htmlString),.text(textString)和.val(value)三种方法都是用来替换选中元素的内容,如果三个方法同时运用在多个元素上时,那么将会替换所有选中元素的内容。

  • .html(),.text(),.val()都可以使用回调函数的返回值来动态的改变多个元素的内容。

增加样式.addClass()

.addClass( className )方法

  • .addClass( className ) : 为每个匹配元素所要增加的一个或多个样式名

  • .addClass( function(index, currentClass) ) : 这个函数返回一个或更多用空格隔开的要增加的样式名

1
.addClass()方法不会替换一个样式类名。它只是简单的添加一个样式类名到元素上

例子:

1
2
<p class="orgClass">
$("p").addClass("newClass")

删除样式.removeClass()

.removeClass( )方法

  • .removeClass( [className ] ):每个匹配元素移除的一个或多个用空格隔开的样式名

  • .removeClass( function(index, class) ) : 一个函数,返回一个或多个将要被移除的样式名

注意事项

如果一个样式类名作为一个参数,只有这样式类会被从匹配的元素集合中删除 。 如果没有样式名作为参数,那么所有的样式类将被移除

切换样式.toggleClass()

jQuery提供一个toggleClass方法用于简化这种互斥的逻辑,通过toggleClass方法动态添加删除Class,一次执行相当于addClass,再次执行相当于removeClass

.toggleClass( )方法:在匹配的元素集合中的每个元素上添加或删除一个或多个样式类,取决于这个样式类是否存在或值切换属性。即:如果存在(不存在)就删除(添加)一个类

  • .toggleClass( className ):在匹配的元素集合中的每个元素上用来切换的一个或多个(用空格隔开)样式类名

  • .toggleClass( className, switch ):一个布尔值,用于判断样式是否应该被添加或移除

  • .toggleClass( [switch ] ):一个用来判断样式类添加还是移除的 布尔值

  • .toggleClass( function(index, class, switch) [, switch ] ):用来返回在匹配的元素集合中的每个元素上用来切换的样式类名的一个函数。接收元素的索引位置和元素旧的样式类作为参数

注意事项:

  • toggleClass是一个互斥的逻辑,也就是通过判断对应的元素上是否存在指定的Class名,如果有就删除,如果没有就增加

  • toggleClass会保留原有的Class名后新增,通过空格隔开

样式操作.css()

.css() 方法:获取元素样式属性的计算值或者设置元素的CSS属性

获取:

  • .css( propertyName ) :获取匹配元素集合中的第一个元素的样式属性的计算值

  • .css( propertyNames ):传递一组数组,返回一个对象结果

设置:

  • .css(propertyName, value ):设置CSS

  • .css( propertyName, function ):可以传入一个回调函数,返回取到对应的值进行处理

  • .css( properties ):可以传一个对象,同时设置多个样式

注意事项:

  • 浏览器属性获取方式不同,在获取某些值的时候都jQuery采用统一的处理,比如颜色采用RBG,尺寸采用px

  • .css()方法支持驼峰写法与大小写混搭的写法,内部做了容错的处理

  • 当一个数只被作为值(value)的时候, jQuery会将其转换为一个字符串,并添在字符串的结尾处添加px,例如 .css(“width”,50}) 与 .css(“width”,”50px”})一样

.css方法设置的样式属性优先级要高于.addClass方法,.addClass与.css方法各有利弊,一般是静态的结构,都确定了布局的规则,可以用addClass的方法,增加统一的类规则
如果是动态的HTML结构,在不确定规则,或者经常变化的情况下,一般多考虑.css()方式

元素的数据存储

jQuery提供的存储接口

1
2
3
4
jQuery.data( element, key, value )   //静态接口,存数据
jQuery.data( element, key ) //静态接口,取数据
.data( key, value ) //实例接口,存数据
.data( key ) //实例接口,存数据

以上笔记来自慕课网jQuery基础 (一)—样式篇,写这篇博客为了督促自己再回来看一眼