jquery.入口函数_5个jQuery.each()函数示例-程序员宅基地

技术标签: ViewUI  python  java  vue  js  javascript  

jquery.入口函数

这是jQuery.each()函数的广泛概述,此函数是jQuery最重要和最常用的函数之一。 在本文中,我们将找出原因,并看看如何使用它。

什么是jQuery.each()

jQuery的each()函数用于遍历目标jQuery对象的每个元素,该对象包含一个或多个DOM元素,并公开所有jQuery函数。 这对于多元素DOM操作以及遍历任意数组和对象属性非常有用。

除了此功能外,jQuery还提供了一个具有相同名称的帮助程序函数,而无需事先选择或创建任何DOM元素即可调用该函数。

jQuery.each()语法

让我们看看实际的不同模式。

下面的示例选择网页上的每个<div>元素,并输出每个元素的索引和ID:

// DOM ELEMENTS
$('div').each(function(index, value) {
  console.log(`div${index}: ${this.id}`);
});

可能的输出为:

div0:header
div1:main
div2:footer

该版本使用jQuery的$(selector).each()函数,而不是实用程序函数。

下一个示例显示了实用程序功能的用法。 在这种情况下,将循环对象作为第一个参数。 在此示例中,我们将展示如何遍历数组:

// ARRAYS
const arr = [
  'one',
  'two',
  'three',
  'four',
  'five'
];

$.each(arr, function(index, value) {
  console.log(value);
  // Will stop running after "three"
  return (value !== 'three');
});

// Outputs: one two three

在最后一个示例中,我们要演示如何迭代对象的属性:

// OBJECTS
const obj = {
  one: 1,
  two: 2,
  three: 3,
  four: 4,
  five: 5
};

$.each(obj, function(key, value) {
  console.log(value);
});

// Outputs: 1 2 3 4 5

所有这些归结为提供适当的回调。 回调的上下文this等于其第二个参数,即当前值。 但是,由于上下文始终是对象,因此必须包装原始值:

$.each({ one: 1, two: 2 } , function(key, value) {
  console.log(this);
});

// Number { 1 }
// Number { 2 }

`

这意味着在值和上下文之间没有严格的相等性。

$.each({ one: 1 } , function(key, value) {
  console.log(this == value);
  console.log(this === value);
});

// true
// false

`

第一个参数是当前索引,它可以是数字(对于数组)或字符串(对于对象)。

1.基本的jQuery.each()函数示例

让我们看看jQuery.each()函数如何帮助我们与jQuery对象结合使用。 第一个示例选择页面中的所有a元素并输出其href属性:

$('a').each(function(index, value){
  console.log(this.href);
});

第二个示例输出网页上的每个外部href (仅假设HTTP(S)协议):

$('a').each(function(index, value){
  const link = this.href;

  if (link.match(/https?:\/\//)) {
    console.log(link);
  }
});

假设我们在页面上有以下链接:

<a href="https://www.sitepoint.com/">SitePoint</a>
<a href="https://developer.mozilla.org">MDN web docs</a>
<a href="http://example.com/">Example Domain</a>

第二个示例将输出:

https://www.sitepoint.com/
https://developer.mozilla.org/
http://example.com/

我们应该注意,来自jQuery对象的DOM元素在传递给jQuery.each()的回调中以其“本机”形式存在。 原因是jQuery实际上只是DOM元素数组的包装。 通过使用jQuery.each() ,此数组的迭代方式与普通数组相同。 因此,我们不会把包装好的元素开箱即用。

填补您的JS知识空白

在扎实的基础上培养您JavaScript技能。

立即阅读书

参考第二个示例,这意味着我们可以通过编写this.href获得元素的href属性。 如果要使用jQuery的attr()方法,则需要像这样重新包装元素: $(this).attr('href')

2. jQuery.each()数组示例

让我们再看看如何处理普通数组:

const numbers = [1, 2, 3, 4, 5];
$.each(numbers, function(index, value){
  console.log(`${index}: ${value}`);
});

该代码段输出:

0:1
1:2
2:3
3:4
4:5

这里没什么特别的。 数组具有数字索引,因此我们获得从0N-1的数字,其中N是数组中元素的数量。

3. jQuery.each()JSON示例

我们可能具有更复杂的数据结构,例如数组中的数组,对象中的对象,对象中的数组或数组中的对象。 让我们看看jQuery.each()如何在这种情况下为我们提供帮助:

const colors = [
  { 'red': '#f00' },
  { 'green': '#0f0' },
  { 'blue': '#00f' }
];

$.each(colors, function() {
  $.each(this, function(name, value) {
    console.log(`${name} = ${value}`);
  });
});

此示例输出:

red = #f00
green = #0f0
blue = #00f

我们通过对jQuery.each()的嵌套调用来处理嵌套结构。 外部调用处理可变colors的数组; 内部调用处理单个对象。 在此示例中,每个对象只有一个键,但是通常,此代码可以处理任何数量的键。

4. jQuery.each()类示例

此示例显示如何遍历具有以下HTML中给定的class productDescription每个元素:

<div class="productDescription">Red</div>
<div>Pink</div>
<div class="productDescription">Orange</div>
<div class="generalDescription">Teal</div>
<div class="productDescription">Green</div>

我们在选择器上使用each()帮助器而不是each()方法。

$.each($('.productDescription'), function(index, value) {
  console.log(index + ':' + $(value).text());
});

在这种情况下,输出为:

0:Red
1:Orange
2:Green

我们不必包含索引和值。 这些只是有助于确定我们当前正在迭代的DOM元素的参数。 此外,在这种情况下,我们还可以使用each方法更加方便。 我们可以这样写:

$('.productDescription').each(function() {
  console.log($(this).text());
});

我们将在控制台上获得它:

Red
Orange
Green

请注意,我们将DOM元素包装在一个新的jQuery实例中,以便可以使用jQuery的text()方法获取该元素的文本内容。

5. jQuery.each()延迟示例

在下一个示例中,当用户单击ID为5demo的元素时,所有列表项将立即设置为橙色。

<ul id="5demo">
  <li>One</li>
  <li>Two</li>
  <li>Three</li>
  <li>Four</li>
  <li>Five</li>
</ul>

一个索引相关的延迟(0,200,400,...毫秒)后,我们淡出元件:

$('#5demo').on('click', function(e) {
  $('li').each(function(index) {
    $(this).css('background-color', 'orange')
           .delay(index * 200)
           .fadeOut(1500);
  });

  e.preventDefault();
});

结论

在本文中,我们演示了如何使用jQuery.each()函数迭代DOM元素,数组和对象。 这是开发人员应在其工具箱中使用的功能强大且省时的小功能。

而且,如果不是jQuery,您可能想看看使用JavaScript的本机Object.keys()Array.prototype.forEach()方法。 还有诸如foreach之类的库,可让您遍历数组对象或字典对象的键值对。

请记住: $.each()$(selector).each()是用两种不同方式定义的两种不同方法。

这篇颇受欢迎的文章于2020年进行了更新,以反映当前的最佳实践,并更新结论中有关使用现代JavaScript的本机解决方案的建议。 要获得更深入JavaScript知识,请阅读我们的书: JavaScript:Ninja的新手,第二版

翻译自: https://www.sitepoint.com/jquery-each-function-examples/

jquery.入口函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dingshi7798/article/details/107268568

智能推荐

Android 锁屏后无法接收UDP_android接收udp组播熄屏收不到-程序员宅基地

文章浏览阅读4.1k次。今天遇到一个很神奇的问题。 应用中有一个服务,服务中使用线程池 进行UDP的接收和发送。 但是,当锁屏后,数据无论如何都接收不到,当打开锁屏的时候,数据接收又恢复正常了。 并且,使用电源锁也没有任何效果。 PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE); wl = pm.newWakeLoc_android接收udp组播熄屏收不到

Netty的Reactor线程模型_reactor线程组-程序员宅基地

文章浏览阅读450次。上图是一个Reactor线程模型,基于select(),epoll(),Reactor线程将I/O调用请求和I/O操作分离开,理论上一个Reactor线程能处理N个网络I/O操作,但是当并发量很大的时候,一个Reactor线程就会出现响应缓慢,连接超时等问题。============================================================那么一个Reacto_reactor线程组

word中导出高分辨率pdf_word导出到pdf时可以选dpi吗-程序员宅基地

文章浏览阅读8.3k次,点赞8次,收藏24次。1、需安装有软件:Adobe Acrobat DC,可通过下面链接下载:https://pan.baidu.com/s/1oJJyN5TdayajDqmoTamkVw&shfl=sharepset 提取码:ai7u2、图片格式设置:如何使用matlab进行绘图,一定要保存图片格式为.tiff,这样才不会对文件进行压缩,使原有的图片分辨率保持不变。3、word在插入高分辨率图片前需..._word导出到pdf时可以选dpi吗

树莓派vi编辑文件时退格键和方向键无法正常使用的问题_树莓派 方向键-程序员宅基地

文章浏览阅读1.2k次。【问题现象】树莓派在使用vi编辑文件时,发现退格删除键(Backspace键),无法删除,方向键变成了ABCD还自动换行。【问题解决】此问题根因是树莓派系统预装的是vim-tiny版本,就是简易版,且默认是兼容模式。ubuntu系统也有相同的问题。下面提供的方法通用适用ubuntu。使用vim命令时提示命令不支持,是因为新系统默认装了vi,没有装vim。【方案1】(推荐)卸载重装vim full完整版。参考命令如下:$sudo apt-get remove vim-common$sudo a_树莓派 方向键

java BufferedImage转MultipartFile-程序员宅基地

文章浏览阅读1w次,点赞43次,收藏21次。java生成二维码返回BufferedImage对象,需要转成MultipartFile进行文件上传。转换流程:BufferedImage → InputStream →MultipartFile //得到BufferedImage对象 BufferedImage bufferedImage = JoinTwoImage.testEncode(200, 200, url); //创建一个ByteArrayOutputStream By._bufferedimage转multipartfile

SQL“ORA-00942: 表或视图不存在”报错解决_sql plus表或视图不存在-程序员宅基地

文章浏览阅读5k次。开发环境:eclipse+oracle之前做的项目换了框架,今天在测试时遇到了这个错误分析一下数据库后发现是因为查询语句中涉及到了两个数据库中的表(之前的框架只用到了一个数据库),但是代码没有更新,只能查询一个库中的表,所以导致报错,只要在涉及到引入表名的句子中(我是WHERE和INNER JOIN句子)加上"数据库名.”就可以了。 ..._sql plus表或视图不存在

随便推点

linux下 tar解压 gz解压 bz2等各种解压文件使用方法_hornycraft解锁农场-程序员宅基地

文章浏览阅读1.6k次。linux下 tar解压 gz解压 bz2等各种解压文件使用方法2010-03-23 15:15.tar  解包:tar xvf FileName.tar  打包:tar cvf FileName.tar DirName  (注:tar是打包,不是压缩!)  ———————————————  .gz  解压1:gunzip FileName.gz  解压2:gzip -_hornycraft解锁农场

知识图谱入门系列_nerrdfs-程序员宅基地

文章浏览阅读571次。很好的入门解说,包括实现方式及意义第一次在知乎上发帖,有不准确的地方欢迎大家指正!!!,后续会持续更新知识图谱相关技术细节。本贴大概介绍一下知识图谱中相关的技术。知识图谱针对于知识图谱基础知识,领域应用和学术前沿趋势进行介绍。知识图谱介绍知识图谱(Knowledge Graph)以结构化的形式描述客观世界中概念、实体及其关系。是融合了认知计算、知识表示与推理、信息检索与抽取、自然语言处理、Web技术、机器学习与大数据挖掘等等方向的交叉学科。人工智能是以传统符号派与目前流行的深度神经._nerrdfs

Thinkphp 模板/内置标签/Foreach标签_{foreach name="typelist" item="vo"}-程序员宅基地

文章浏览阅读4k次。Foreach标签foreach标签类似与volist标签,只是更加简单,没有太多额外的属性,例如:&lt;foreach name="list" item="vo"&gt; {$vo.id}:{$vo.name}&lt;/foreach&gt;name表示数据源 item表示循环变量。可以输出索引,如下:&lt;foreach name="list" item..._{foreach name="typelist" item="vo"}

Camera2中方法createcapturesession过时的解决方案_camera.createcapturesession过时-程序员宅基地

文章浏览阅读2.6k次,点赞3次,收藏2次。想做个相机的DEMO,简单地打开相机,然后捕捉画面到手机屏幕上。结果在创建会话的时候遇到了个麻烦。搜遍了CSDN和博客园等等,关于关键方法createCaptureSession全是用过时的参数配置,自己查看源码和API文档,慢慢地给试出来了~感觉真是第一篇关于createCaptureSession方法的讲解。2021年前的这样的参数配置都过时了~ @Deprecated public abstract void createCaptureSession(@NonNull List<S_camera.createcapturesession过时

Redis 设置一个key的过期时间和生僻命令演习(八 .)_redisson 获取某个key并设置时间-程序员宅基地

文章浏览阅读63次。设置key 的存活时间100秒127.0.0.1:6379> EXPIRE HZQ 100查看还有多长时间存活127.0.0.1:6379> ttl HZQ(integer) 96127.0.0.1:6379> ttl HZQ(integer) 90127.0.0.1:6379> ttl HZQ(integer) 83127.0.0.1:6379> ttl HZQ 已经没了(integer) -2..._redisson 获取某个key并设置时间

Ubuntu16.04 编译安装intel SGX Driver,SDK,PSW并验证环境201905_sgx psw bin-程序员宅基地

文章浏览阅读3.1k次。我的环境阿里云ECS主机, 1 vCPU 4 GiB (I/O优化) 抢占性实例(便宜)Ubuntu 16.04root用户完成以下所有操作。其他用户出现问题需要自己解决时间2019年5月github上下载的资源。版本参考下面图片目标利用上述环境部署intel sgx的Driver 、 SDK、PSW。初学者要区分这三者。运行一个demo程序,验证环境。读这篇文章的问,即使是..._sgx psw bin