盘点用jQuery框架实现“for循环”的四种方式!

开发 前端
今天来和大家分享在jQuery高级开发中对元素标签体的遍历常用的几种方法。

[[406186]]

今天来和大家分享在jQuery高级开发中对元素标签体的遍历常用的几种方法。

我们以一个案例的形式进行讲解,假如我们需要遍历的是如下ul标签中的li标签:

  1. <body> 
  2. <ul id="city"
  3.     <li>北京</li> 
  4.     <li>上海</li> 
  5.     <li>天津</li> 
  6.     <li>重庆</li> 
  7. </ul> 
  8. </body> 

一、JS的遍历方式

首先第一种:利用js对象进行遍历。

利用js对象的方法进行遍历和我们平常的for循环遍历是一样的思路和解法,首先我们应该获取到需要遍历的元素标签,然后使用for循环方法对其中存在的标签进行遍历:下面以一个实例来进行讲解。

遍历四个li标签,并且弹出其中的内容,如果标签体内容是“上海”,则不弹出!

  1. $(function (message) { 
  2.            // 获取到UI下的所有Li标签 
  3.            var citys = $("#city li"
  4.            // 利用js中的for循环进行遍历 
  5.            // 将获取到的li标签数组进行遍历 
  6.            for (var i = 0; i < citys.length; i++) { 
  7.                 // 循环内容判断 
  8.                if ("上海" == citys[i].innerHTML){ 
  9.                  // break; 
  10.                    continue
  11.                } 
  12.                // 输出获取到的li标签中的内容 
  13.                alert(i + citys[i].innerHTML); 
  14.            } 
  15.  
  16.        }); 

二、JQuery的遍历方式

1. jQuery对象.each(callback)

使用该方法时需要在each()中实现function()方法,在function()方法中可以进行赋参数,也可以不赋参数,

首先我们来看不用赋予参数的一种,这种方法只能用于获取元素,而不能显示当前是第几个元素。如下:

  1. $(function (message) { 
  2.             // 获取到UI下的所有Li标签 
  3.             var citys = $("#city li"
  4.  
  5.             // 利用jQuery对象的each进行遍历 
  6.             // 利用this进行遍历 
  7.             citys.each(function () { 
  8.                 // alert(this.innerHTML); 
  9.                 alert($(this).html()); 
  10.             }); 
  11.  
  12.         }); 

其中的this表示:集合中的每一个元素对象

第二种是在function()中赋予参数:

jquery对象.each(function(index,element){});

* index:就是元素在集合中的索引

* element:就是集合中的每一个元素对象

利用这种方式可以回调函数返回值:如结束本次循环或结束整个循环吗,但是并不是使用break,

在这里使用的是return true/false

* false:如果当前function返回为false,则结束循环(break)。

* true:如果当前function返回为true,则结束本次循环,继续下次循环(continue)

实例代码:

  1. $(function (message) { 
  2.             // 获取到UI下的所有Li标签 
  3.             var citys = $("#city li"
  4.  
  5.             // 利用jQuery对象的each进行遍历 
  6.             // 利用给function赋值获取对象文本 
  7.             citys.each(function (index,element) { 
  8.  
  9.                 if ("上海" == $(element).html()){ 
  10.                     return true;    //结束本次循环 
  11.                 } 
  12.                 // js方式 
  13.                 // alert(index + ":" + element.innerHTML); 
  14.                 // jQuery方式s 
  15.                 alert(index + ":" + $(element).text()); 
  16.  
  17.             }); 
  18.         }); 

2. $.each(object, [callback])

使用这种方法和上面那种方法相似,只不过最前面不是jQuery对象了,而是一个$符号,jQuery对象被放到了each()里面,但实现还是和上面一样的。如下:

  1. $(function (message) { 
  2.             // 获取到UI下的所有Li标签 
  3.             var citys = $("#city li"
  4.  
  5.             // 利用$.each()方法 
  6.            $.each(citys, function () { 
  7.                 alert($(this).html()); 
  8.             }); 
  9.  
  10.         }); 

3. for..of方法

这种方法是jquery 3.0 版本之后提供的方式

语法格式是:for(元素对象 of 容器对象)

同样是容ul标签中取出li标签元素,代码如下:

  1. $(function (message) { 
  2.             // 获取到UI下的所有Li标签 
  3.             var citys = $("#city li"
  4.  
  5.             // 利用for---of的方式 
  6.             for (li of citys){ 
  7.                 alert($(li).html()) 
  8.             } 
  9.  
  10.         }); 

最后附上面四种实现的完整源码。

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4.     <meta charset="UTF-8"
  5.     <title></title> 
  6.     <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script> 
  7.     <script type="text/javascript"
  8.         $(function (message) { 
  9.             // 获取到UI下的所有Li标签 
  10.             var citys = $("#city li"
  11.             // 利用js中的for循环进行遍历 
  12.             // 将获取到的li标签数组进行遍历 
  13.             for (var i = 0; i < citys.length; i++) { 
  14.                  // 循环内容判断 
  15.                 if ("上海" == citys[i].innerHTML){ 
  16.                   // break; 
  17.                     continue
  18.                 } 
  19.                 // 输出获取到的li标签中的内容 
  20.                 alert(i + citys[i].innerHTML); 
  21.             } 
  22.  
  23.             // 利用jQuery对象的each进行遍历 
  24.             // 利用this进行遍历 
  25. /*            citys.each(function () { 
  26.                 // alert(this.innerHTML); 
  27.                 alert($(this).html()); 
  28.             }); 
  29.             */ 
  30.             // 利用给function赋值获取对象文本 
  31.             /*citys.each(function (index,element) { 
  32.  
  33.                 if ("上海" == $(element).html()){ 
  34.                     return true; 
  35.                 } 
  36.                 // js方式 
  37.                 // alert(index + ":" + element.innerHTML); 
  38.                 // jQuery方式s 
  39.                 alert(index + ":" + $(element).text()); 
  40.  
  41.             });*/ 
  42.  
  43.             // 利用$.each()方法 
  44.            /* $.each(citys, function () { 
  45.                 alert($(this).html()); 
  46.             });*/ 
  47.  
  48.             // 利用for---of的方式 
  49. /*            for (li of citys){ 
  50.                 alert($(li).html()) 
  51.             }*/ 
  52.              
  53.         }); 
  54.          
  55.     </script> 
  56. </head> 
  57. <body> 
  58. <ul id="city"
  59.     <li>北京</li> 
  60.     <li>上海</li> 
  61.     <li>天津</li> 
  62.     <li>重庆</li> 
  63. </ul> 
  64. </body> 
  65. </html> 

 

责任编辑:张燕妮 来源: 华为云社区
相关推荐

2021-12-22 09:34:01

Golagn配置方式

2015-04-02 16:54:52

灾难恢复VDI灾难恢复

2015-04-13 11:39:26

VDI灾难恢复

2010-08-05 09:33:08

Flex页面跳转

2021-08-11 20:17:22

推荐算法系统

2022-01-12 11:02:01

云计算安全技术

2022-03-25 14:47:24

Javascript数据类型开发

2010-07-28 13:54:42

Flex数据绑定

2023-05-22 08:03:28

JavaScrip枚举定义

2017-04-17 19:31:03

Android多线程

2020-06-12 08:28:29

JavaScript开发技术

2013-06-14 15:24:57

Android开发移动开发数据存储方式

2014-12-25 09:41:15

Android加载方式

2013-10-17 09:25:52

2011-03-16 09:05:53

NATiptables

2021-06-25 08:00:00

物联网医疗技术

2015-09-06 09:23:23

Android异步更新

2024-03-20 15:33:12

2011-05-20 09:55:26

Oracle连接

2022-10-27 14:18:13

Flowable流程变量
点赞
收藏

51CTO技术栈公众号