jQuery(四)jQuery 遍历、parentsUntil()、find()、siblings()、eq()、 filter()、not() 、异步处理方法比较
文章目录
总结:
parentsUntil() 方法返回介于两个给定元素之间的所有祖先元素。
find() 方法返回被选元素的后代元素,一路向下直到最后一个后代。
siblings() 方法返回被选元素的所有同胞元素。您也可以使用可选参数来过滤对同胞元素的搜索。 $(“h2”).siblings(“p”);
eq() 方法返回被选元素中带有指定索引号的元素。
filter() 方法允许您规定一个标准。不匹配这个标准的元素会被从集合中删除,匹配的元素会被返回。
not() 方法返回不匹配标准的所有元素。
提示:not() 方法与 filter() 相反。
1. jQuery 遍历
什么是遍历?
jQuery 遍历,意为"移动",用于根据其相对于其他元素的关系来"查找"(或选取)HTML 元素。以某项选择开始,并沿着这个选择移动,直到抵达您期望的元素为止。
下图展示了一个家族树。通过 jQuery 遍历,您能够从被选(当前的)元素开始,轻松地在家族树中向上移动(祖先),向下移动(子孙),水平移动(同胞)。这种移动被称为对 DOM 进行遍历。
图示解析:
-
元素是
- 的父元素,同时是其中所有内容的祖先。
-
- 元素是
- 元素的父元素,同时是
的子元素
- 左边的
- 元素是 的父元素,
-
的子元素,同时是
的后代。
-
的子元素,同时是
- 元素是
- 的子元素,同时是
-
和
的后代。
-
和
- 两个
- 元素是同胞(拥有相同的父元素)。
- 右边的
- 元素是 的父元素,
-
的子元素,同时是
的后代。
-
的子元素,同时是
- 元素是右边的
- 的子元素,同时是
-
和
的后代。
-
和
祖先是父、祖父、曾祖父等等。后代是子、孙、曾孙等等。同胞拥有相同的父。
遍历 DOM
jQuery 提供了多种遍历 DOM 的方法。
遍历方法中最大的种类是树遍历(tree-traversal)。
下一章会讲解如何在 DOM 树中向上、下以及同级移动。
2. 祖先
祖先是父、祖父或曾祖父等等。
通过 jQuery,您能够向上遍历 DOM 树,以查找元素的祖先。
向上遍历 DOM 树
这些 jQuery 方法很有用,它们用于向上遍历 DOM 树:
- parent()
- parents()
- parentsUntil()
jQuery parent() 方法
parent() 方法返回被选元素的直接父元素。
该方法只会向上一级对 DOM 树进行遍历。
下面的例子返回每个 元素的直接父元素:
$(document).ready(function(){
$("span").parent();
});
jQuery parents() 方法
parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 ()。
下面的例子返回所有 元素的所有祖先:
$(document).ready(function(){
$("span").parents("ul");
});
jQuery parentsUntil() 方法
parentsUntil() 方法返回介于两个给定元素之间的所有祖先元素。
下面的例子返回介于 与
$(document).ready(function(){
$("span").parentsUntil("div");
});
3. 后代
后代是子、孙、曾孙等等。
通过 jQuery,您能够向下遍历 DOM 树,以查找元素的后代。
向下遍历 DOM 树
下面是两个用于向下遍历 DOM 树的 jQuery 方法:
- children()
- find()
jQuery children() 方法
children() 方法返回被选元素的所有直接子元素。
该方法只会向下一级对 DOM 树进行遍历。
下面的例子返回每个
$(document).ready(function(){
$("div").children();
});
您也可以使用可选参数来过滤对子元素的搜索。
下面的例子返回类名为 “1” 的所有
元素,并且它们是
$(document).ready(function(){
$("div").children("p.1");
});
jQuery find() 方法
find() 方法返回被选元素的后代元素,一路向下直到最后一个后代。
下面的例子返回属于
$(document).ready(function(){
$("div").find("span");
});
下面的例子返回
$(document).ready(function(){
$("div").find("*");
});
4. 同胞(siblings)
同胞拥有相同的父元素。
通过 jQuery,您能够在 DOM 树中遍历元素的同胞元素。
在 DOM 树中水平遍历
有许多有用的方法让我们在 DOM 树进行水平遍历:
- siblings()
- next()
- nextAll()
- nextUntil()
- prev()
- prevAll()
- prevUntil()
jQuery siblings() 方法
siblings() 方法返回被选元素的所有同胞元素。
下面的例子返回
的所有同胞元素:
$(document).ready(function(){
$("h2").siblings();
});
您也可以使用可选参数来过滤对同胞元素的搜索。
下面的例子返回属于
的同胞元素的所有
元素:
$(document).ready(function(){
$("h2").siblings("p");
});
jQuery next() 方法
next() 方法返回被选元素的下一个同胞元素。
该方法只返回一个元素。
jQuery nextAll() 方法
nextAll() 方法返回被选元素的所有跟随的同胞元素。
jQuery nextUntil() 方法
nextUntil() 方法返回介于两个给定参数之间的所有跟随的同胞元素。
下面的例子返回介于
与
元素之间的所有同胞元素:
$(document).ready(function(){
$("h2").nextUntil("h6");
});
jQuery prev(), prevAll() & prevUntil() 方法
prev(), prevAll() 以及 prevUntil() 方法的工作方式与上面的方法类似,只不过方向相反而已:它们返回的是前面的同胞元素(在 DOM 树中沿着同胞之前元素遍历,而不是之后元素遍历)。
5. 过滤
三个最基本的过滤方法是:first(), last() 和 eq(),它们允许您基于其在一组元素中的位置来选择一个特定的元素。
其他过滤方法,比如 filter() 和 not() 允许您选取匹配或不匹配某项指定标准的元素。
-
first()
-
first() 方法返回被选元素的首个元素。
-
$(document).ready(function(){ $("div p").first(); });
-
-
last()
- last() 方法返回被选元素的最后一个元素。
-
eq()
-
eq() 方法返回被选元素中带有指定索引号的元素。
索引号从 0 开始,因此首个元素的索引号是 0 而不是 1。下面的例子选取第二个
元素(索引号 1):
-
$(document).ready(function(){ $("p").eq(1); });
-
-
filter()
-
filter() 方法允许您规定一个标准。不匹配这个标准的元素会被从集合中删除,匹配的元素会被返回。
下面的例子返回带有类名 “url” 的所有
元素:
-
$(document).ready(function(){ $("p").filter(".url"); });
-
-
not()
-
not() 方法返回不匹配标准的所有元素。
提示:not() 方法与 filter() 相反。
下面的例子返回不带有类名 “url” 的所有
元素:
-
$(document).ready(function(){ $("p").not(".url"); });
-
6. 回忆:异步处理方法比较
总结:
Promise 的写法
- 比回调函数的写法大大改进
- 但是一眼看上去,代码完全都是 Promise 的 API(
then
、catch
等等),操作本身的语义反而不容易看出来。Generator 函数
- 语义比 Promise 写法更清晰,用户定义的操作全部都出现在
spawn
函数的内部。- 这个写法的问题在于,必须有一个任务运行器,自动执行 Generator 函数,上面代码的
spawn
函数就是自动执行器,它返回一个 Promise 对象,- 而且必须保证
yield
语句后面的表达式,必须返回一个 Promise。Async 函数
- 最简洁,最符合语义,几乎没有语义不相关的代码。
- 它将 Generator 写法中的自动执行器,改在语言层面提供,不暴露给用户,因此代码量最少。