You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery选择器是否自动遍历所有匹配元素?两种事件绑定方式效果一致原因问询

问题解答

你遇到的两种绑定事件写法效果完全一致,核心是jQuery内置了隐式迭代的默认机制。

原理说明

  • 用$('.link')这类选择器执行查询后,返回的是包含所有匹配DOM元素的jQuery集合对象
  • 所有用于「修改/操作元素」的jQuery实例方法(包括事件绑定、样式修改、属性修改、内容修改等,比如你用到的.on(),还有常见的.css()、.addClass()、.attr()、.hide()等),默认都会自动遍历集合内的每一个元素,执行对应操作,不需要开发者手动写循环遍历。

你第一种直接调用.on()的写法,jQuery内部已经帮你完成了和第二种手动.each()遍历完全一致的逻辑,所以最终运行效果没有区别。

隐式迭代的适用场景

jQuery的隐式迭代不是所有方法都生效,有明确的适用范围:

  • 支持隐式迭代的场景:所有执行「写入/修改」操作的实例方法,调用时会自动遍历所有匹配元素执行操作,无需手动循环
  • 不支持隐式迭代的场景:执行「读取/取值」操作的实例方法不会触发隐式迭代,比如不带参数调用.text()、.attr('属性名')、.val()时,只会返回集合中第一个元素的对应值,如果需要获取所有元素的对应值,才需要手动写.each()遍历处理。

举个简单的例子验证:

// 不用加each,所有class为link的元素文字都会变成红色,就是隐式迭代的作用
$('.link').css('color', 'red');

// 不带参数调用text(),只会返回第一个Link的文本「Link1」,不会遍历返回所有元素的文本
console.log($('.link').text());

内容的提问来源于stack exchange,提问作者Hooman Bahreini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:45:01