【天天新要闻】jquery有哪些遍历方法

时间:2023-03-15 14:14:34       来源:PHP中文网

本教程操作环境:windows7系统、jquery3.6版本、Dell G3电脑。


(资料图片)

jQuery 遍历方法总结

jQuery 遍历函数包括了用于筛选、查找和串联元素的方法。

方法描述
add()把元素添加到匹配元素的集合中
addBack()把之前的元素集添加到当前集合中
andSelf()在版本 1.8 中被废弃。addBack() 的别名
children()返回被选元素的所有直接子元素
closest()返回被选元素的第一个祖先元素
contents()返回被选元素的所有直接子元素(包含文本和注释节点)
each()为每个匹配元素执行函数
end()结束当前链中最近的一次筛选操作,并把匹配元素集合返回到前一次的状态
eq()返回带有被选元素的指定索引号的元素
filter()把匹配元素集合缩减为匹配选择器或匹配函数返回值的新元素
find()返回被选元素的后代元素
first()返回被选元素的第一个元素
has()返回拥有一个或多个元素在其内的所有元素
is()根据选择器/元素/jQuery 对象检查匹配元素集合,如果存在至少一个匹配元素,则返回 true
last()返回被选元素的最后一个元素
map()把当前匹配集合中的每个元素传递给函数,产生包含返回值的新 jQuery 对象
next()返回被选元素的后一个同级元素
nextAll()返回被选元素之后的所有同级元素
nextUntil()返回介于两个给定参数之间的每个元素之后的所有同级元素
not()从匹配元素集合中移除元素
offsetParent()返回第一个定位的父元素
parent()返回被选元素的直接父元素
parents()返回被选元素的所有祖先元素
parentsUntil()返回介于两个给定参数之间的所有祖先元素
prev()返回被选元素的前一个同级元素
prevAll()返回被选元素之前的所有同级元素
prevUntil()返回介于两个给定参数之间的每个元素之前的所有同级元素
siblings()返回被选元素的所有同级元素
slice()把匹配元素集合缩减为指定范围的子集

两个遍历子元素的方法

children()方法:获取该元素下的直接子集元素

find()方法:获取该元素下的所有(包括子集的子集)子集元素

区别:

children() 方法返回返回被选元素的所有直接子元素 (直接子元素,只找儿子不要孙子(: 也就是说不会递归去遍历)

find()方法获得当前元素集合中每个元素的后代 (注意find()方法,必须传参数,否者无效)

示例:查询所有子元素

<script src="js/jquery-1.10.2.min.js"></script><script>$(document).ready(function() {$("button").on("click", function() {$("ul").find("*").css({"color": "red","border": "2px solid red"});});});</script>
div (父节点)
    ul (指定元素)
  • li (子节点1)span (孙节点1)
  • li (子节点2)span (孙节点2)
  • li (子节点3)span (孙节点3)
登录后复制

7种遍历同级元素的方法:

siblings()方法,主要用于获得指定元素的同级所有元素

next()方法,主要用于获得指定元素的下一个同级元素

nextAll()方法,主要用于获得指定元素的下一个同级的所有元素

nextUntil()方法,主要用于获得指定元素的下一个同级元素,这个同级元素必须为指定元素与nextUntil()方法所设置元素之间的元素

prev()方法,主要用于获得指定元素的上一级同级元素

prevAll()方法,主要用于获得指定元素上一级所有的同级元素

prevUntil()方法,主要用于获得指定元素的上一个同级元素,这个同级元素必须为指定元素与prevUntil()方法所设置元素之间的元素

siblings()方法

<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
Hello

Hello Again

And Again

<script>$("p").siblings(".selected").css("background", "yellow");</script>
登录后复制

next()方法

<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
  • list item 1
  • list item 2
  • list item 3
  • list item 4
  • list item 5
<script>$("li.third-item").next().css("background-color", "red");</script>
登录后复制

nextAll()方法

<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
  • list item 1
  • list item 2
  • list item 3
  • list item 4
  • list item 5
<script>$("li.third-item").nextAll().css("background-color", "red");</script>
登录后复制

nextUntil()方法

<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script><script>$(document).ready(function() {$("li.start").nextUntil("li.stop").css({"color": "red","border": "2px solid red"});});</script>
    ul (父节点)
  • li (兄弟节点)
  • li (兄弟节点)
  • li (类名为"start"的兄弟节点)
  • li (类名为"start"的li节点的下一个兄弟节点)
  • li (类名为"start"的li节点的下一个兄弟节点)
  • li (类名为"start"的li节点的下一个兄弟节点)
  • li (类名为"stop"的兄弟节点)

在这个例子中,我们返回在类名为“star”和类名为“stop”的 li元素之间的所有下一个兄弟元素。

登录后复制

prev()方法

<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script><script>$(document).ready(function() {$("li.start").prev().css({"color": "red","border": "2px solid red"});});</script>
    ul (父节点)
  • li (兄弟节点)
  • li (类名为"start"的li节点的上一个兄弟节点)
  • li (类名为"start"的li节点)
  • li (兄弟节点)
  • li (兄弟节点)
登录后复制

prevAll()方法

<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script><script>$(document).ready(function() {$("li.start").prevAll().css({"color": "red","border": "2px solid red"});});</script>
    ul (parent)
  • li (类名为"start"的li的上一个兄弟节点)
  • li (类名为"start"的li的上一个兄弟节点)
  • li (类名为"start"的li的上一个兄弟节点)
  • li (类名为"start"的li节点)
  • li (兄弟节点)
  • li (兄弟节点)

在这个例子中,我们返回类名称为“star”的li元素之前的所有兄弟元素。

登录后复制

prevUntil()方法

<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script><script>$(document).ready(function() {$("li.start").prevUntil("li.stop").css({"color": "red","border": "2px solid red"});});</script>
    ul (父节点)
  • li (类名为"stop"的兄弟节点)
  • li (类名为"start"的li节点的上一个兄弟节点)
  • li (类名为"start"的li节点的上一个兄弟节点)
  • li (类名为"start"的li节点的上一个兄弟节点)
  • li (类名为"start"的li节点)
  • li (兄弟节点)
  • li (兄弟节点)

在这个例子中,我们返回在类名为“star”和“stop”的li元素之间的所有上一个兄弟元素,。

登录后复制

each()和map()方法可以遍历数组

each()遍历数组

<script>var arr = [1,3,5,7,9];var obj = {0:1,1:3,2:5,3:7,4:9};/*** 利用jQuery的each静态方法遍历* 第一个参数:当前遍历到的索引* 第二个元素:遍历到的元素* 注意:jQuery的each方法可以遍历伪数组*/$.each(arr,function(index,value){console.log("jQuery-each方法遍历数组:",index,value);})$.each(obj,function(index,value){console.log("jQuery-each方法遍历伪数组:",index,value);})</script>
登录后复制

map()遍历数组

<script>var arr = [1,3,5,7,9];var obj = {0:1,1:3,2:5,3:7,4:9};/***1.利用原生JS的map方法遍历 *第一个参数:遍历到的元素*第二个参数:当前遍历到的索引*第三个参数:当前被遍历的数组*注意:和原生的forEach方法一样,不能遍历伪数组*/arr.map(function(value,index,array){console.log("原生map遍历数组:",index,value,array);});/**obj.map(function(value,index,array){console.log("原生map遍历伪数组:",index,value,array);//Uncaught TypeError: obj.forEach is not a function});*//*** 2.利用jQuery的each静态方法遍历* 第一个参数:要遍历的数组* 每遍历一个元素之后执行的回调函数* 回调函数的参数:* 第一个参数:遍历到的元素* 第二个元素:当前遍历到的索引* 注意:和jQuery的each方法一样可以遍历伪数组*/$.map(arr,function(value,index){console.log("jQuery-map方法遍历数组:",index,value);})$.map(obj,function(value,index){console.log("jQuery-map方法遍历伪数组:",index,value);})</script>
登录后复制

扩展知识:each的用法

1.数组中的each

复制代码 var arr = [ "one", "two", "three", "four"];      $.each(arr, function(){         alert(this);      });   //上面这个each输出的结果分别为:one,two,three,four        var arr1 = [[1, 4, 3], [4, 6, 6], [7, 20, 9]]     $.each(arr1, function(i, item){        alert(item[0]);     });     //其实arr1为一个二维数组,item相当于取每一个一维数组,   //item[0]相对于取每一个一维数组里的第一个值   //所以上面这个each输出分别为:1   4   7         var obj = { one:1, two:2, three:3, four:4};     $.each(obj, function(i) {         alert(obj[i]);           });   //这个each就有更厉害了,能循环每一个属性     //输出结果为:1   2  3  4
登录后复制

2.遍历Dom元素中

<script type="text/javascript" src="/jquery/jquery.js"></script><script type="text/javascript">$(document).ready(function(){  $("button").click(function(){    $("li").each(function(){      alert($(this).text())    });  });});</script>
  • Coffee
  • Milk
  • Soda
登录后复制

依次弹出Coffee,Milk,Soda

3.each和map的比较

下面的例子是获取每一个多框的ID值;

each方法:

定义一个空数组,通过each方法,往数组添加ID值;最后将数组转换成字符串后,alert这个值;

$(function(){    var arr = [];    $(":checkbox").each(function(index){        arr.push(this.id);    });    var str = arr.join(",");    alert(str);})
登录后复制

map方法:

将每个:checkbox执行return this.id;并将这些返回值,自动的保存为jQuery对象,然后用get方法将其转换成原生Javascript数组,再使用join方法转换成字符串,最后alert这个值;

$(function(){    var str = $(":checkbox").map(function() {        return this.id;    }).get().join();        alert(str);})
登录后复制

当有需一个数组的值的时候,用map方法,很方便。

4.jquery中使用each

例遍数组,同时使用元素索引和内容。(i是索引,n是内容)

代码如下:

$.each( [0,1,2], function(i, n){alert( "Item #" + i + ": " + n );});
登录后复制

例遍对象,同时使用成员名称和变量内容。(i是成员名称,n是变量内容)

代码如下:

$.each( { name: "John", lang: "JS" }, function(i, n){alert( "Name: " + i + ", Value: " + n );});
登录后复制

例遍dom元素,此处以一个input表单元素作为例子。

如果你dom中有一段这样的代码

   
登录后复制

然后你使用each如下

代码如下:

$.each($("input:hidden"), function(i,val){alert(val); //输出[object HTMLInputElement],因为它是一个表单元素。alert(i); //输出索引为0,1,2,3alert(val.name); //输出name的值alert(val.value); //输出value的值});
登录后复制

5.each中根据this查找元素

实现效果”回复”两个字只有在鼠标经过的时候才显示出来

  1. 嗨,第一层评论

登录后复制

js代码如下

$("div.reply").hover(function(){  $(this).find(".comment-reply-link").show();},function(){  $(this).find(".comment-reply-link").hide();});
登录后复制

实现效果,验证判断题是否都有选择

html

  • 1. 阿斯顿按时
    • A .阿萨德发
    • B .阿萨德发
    • C .阿斯顿

登录后复制

js代码

//验证单选题是否选中        $("ul#ulSingle>li.liStyle").each(function (index) {            //选项个数            var count = $(this).find("ul>li>:checkbox").length;            var selectedCount = 0            for (var i = 0; i < count; i++) {                if ($(this).find("ul>li>:checkbox:eq(" + i + ")").attr("checked")) {                    selectedCount++;                    break;                }            }            if (selectedCount == 0) {                $(this).find("label#selectTips").show();                return false;            }            else {                $(this).find("label#selectTips").hide();            }        })
登录后复制

ps:传说中attr("property", "value");在部分浏览器中不管用可以用prop,如果只是判断可以用$(this).find("ul>li>:checkbox:eq(" + i + ")").is(":checked");

6.官方解释以下是官方的解释:

jQuery.each(object, [callback])
登录后复制

概述

通用例遍方法,可用于例遍对象和数组。 不同于例遍 jQuery 对象的 $().each() 方法,此方法可用于例遍任何对象。回调函数拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内容。如果需要退出 each 循环可使回调函数返回 false,其它返回值将被忽略。

参数

objectObject :需要例遍的对象或数组。

callback (可选)Function :每个成员/元素执行的回调函数。

【推荐学习:jQuery视频教程、web前端视频】

以上就是jquery有哪些遍历方法的详细内容,更多请关注php中文网其它相关文章!

关键词: