导言
在通过
jQuery
选择器获取到jQuery集合后,我们也许会想更加细致的划分集合,或者只要其中的单个元素,这时候就需要我们来用jQuery
的函数对集合进行操作了。
1. 创建新HTML元素
一种典型的情况是:当需要从部获取数据时,使用Ajax后,返回的数据是JSON或者XML格式,需要我们显示为一个表格。
$('html')
创建基础的html元素
* $('<div>')
等价于$('<div/>')和$('<div></div>')
$('html', content)
创建带有属性或事件的元素
$('<img>', {
src:'imges/little.bear.png',
alt:'Little Bear',
title:'hello Bear',
click:function(){
alert($(this).attr('title'));
}
}).appendTo('body');
2. 管理jQuery集合
2.1 确定集合的大小
jQuery
提供了length
属性,例如$('p').length
2.2 从集合获取元素
有时需要直接访问元素或者执行原生的JavaScript
的操作
-
get(index)
,返回一个DOM
元素,或者一个DOM
元素数组
有时我们想获取一个指定元素的jQuery
对象,而不是原始元素,可以用$($('p').get(2))
,看起来有点奇怪,为此jQuery
提供了eq()
方法
方法 | 描述 | 返回 |
| 获取指定索引的元素 | 包含结果的 |
| 获取集合中的第一个元素 | 包含结果的 |
| 获取集合中的最后一个元素 | 包含结果的 |
| 作为数组返回 | 以js数组的形式返回集合中的 |
| 反向操作确定集合中元素的索引值 | 集合中元素的索引值,没有找到,返回 |
| 无参的,可以查找父节点中元素的索引(兄弟节点) | 其在兄弟节点中的索引 |
index()
无参的:
<ul id = "main-menu">
<li id ="home-link"><a href="">sss</a></li>
<li id = "pro-link"><a href="">www</a></li>
<li id = "blog-link"><a href="">blog</a></li>
</ul>
var index = $('#blog-link').index();//结果是2
2.3 使用关系获取集合
jQuery
允许根据DOM
元素之间的层级关系获取新的集合
方法 | 描述 |
| 以集合形式返回集合中所有元素的唯一祖先,结果既有直接父节点也有其他高级节点,如果设置选择器,则返回匹配的祖先节点 |
| 返回集合中所有元素的直接父节点元素,结果以集合形式返回,如果设置选择器,则返回匹配的祖先节点 |
| 返回集合中每个元素的子节点作为一个集合 |
| 返回指定元素的兄弟元素,但不包括匹配选择器的元素 |
| 返回匹配元素的的直接前兄弟节点的集合,如果设置选择器,则只会选择匹配的前兄弟节点元素 |
| 返回集合中元素的所有子元素,过滤选择器的参数可选 |
| 返回包含匹配指定选择器的每个元素最近上级节点的集合 |
| 以集合形式返回集合中元素的兄弟节点,元素可以被选择器过滤 |
2.4 分割集合
一旦有了集合,那么或许想通过添加或者删除来调整集合中的元素,那么就需要分割集合
方法 | 描述 |
| 创建 |
| 接收一个样式名作为参数,然后把样式添加给集合中的元素 |
| 创建不包含选择器参数匹配元素的新集合,如果传递的是函数,那么会根据每个元素来执行函数,如果返回 |
| 和 |
| 创建并返回匹配集合中部分元素的新集合 |
| 创建并返回新的集合,只包含匹配 |
| 在集合中的每个元素上调用 |
| 遍历集合中的每个元素,然后为每个元素调入传入的迭代器函数 |
map()
:查询包含所有ID的jQuery
对象,返回js
数组
var $allIds = $('div').map(function(){
return this.id;
}).toArray();
each()
:为匹配集合中的每一个元素设置一个属性值
$('img').each(function(i){
this.alt = 'this is image['+ i +']with an id of' + this.id
})
2.5 集合的其他方法
方法 | 描述 |
| 确定集合中是否有元素匹配给定的选择器,包含返回 |
| 在链式调用中使用该方法,可以将匹配的集合返回到之前的状态 |
| 把栈上前一个集合的元属添加到当前集合里,可以选择性提供选择器参数 |
-
jQuery
对象维护了一个内部栈来保存针对匹配元素集合的修改。 - 调用
end()
方法,顶部的集合就会弹出,流出前一个集合来操作后续方法 - 调用
addBack()
方法,他会把栈上前一个集合的元属添加到当前集合里,可以选择性提供选择器参数,会创建一个新的集合
总结
本节介绍了如何创建和查找匹配的元素集合,以及如何使用HTML
代码动态创建新的元素集合。这些独立的元素存储在集合中,最后附加到页面文档的莫个部分上。为了调整集合,jQuery
提供了很多方法,既有创建后立即执行的,也有链式调用方法中执行的。
既然已经知道了如何选择我们想要操作的元素集合了,那么接下来就学习实现页面动态效果的jQuery
DOM
操作方法吧。