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

关于jQuery中this关键字及多元素无循环绑定点击事件的疑问

问题解析:jQuery中this关键字与无循环处理多元素的原理

原始代码

$('.expandIcon').click(function(e) {
  $(this).toggleClass("bi-dash-circle bi-plus-circle");
  console.log(this);
  $(this).closest(".faq-heading").children(".faq-answer").toggleClass("d-none");
})

一、为什么不用循环就能处理多个.expandIcon元素?

  • jQuery的选择器$('.expandIcon')会一次性选中页面中所有带有expandIcon类的元素,返回一个包含这些元素的jQuery集合对象
  • 当你调用.click()方法绑定事件时,jQuery内部会自动遍历这个集合里的每一个元素,为每个元素单独绑定点击事件处理函数
  • 也就是说,你写的这个处理函数会被复制一份,分别绑定到每个匹配的元素上,不需要手动写for/forEach循环来逐个绑定

二、this关键字的作用

  • 在这个点击事件处理函数中,this指向的是当前被用户点击的那个原生DOM元素(注意:不是jQuery对象,是浏览器原生的Element节点)
  • 用$(this)可以把这个原生DOM元素转换成jQuery对象,这样就能调用jQuery的方法(比如toggleClass、closest)
  • 举个例子:当你点击页面中第二个.expandIcon时,this就是第二个对应的DOM节点,$(this)就只操作这个元素,切换它的图标类,再通过closest找到它所在的.faq-heading,进而控制对应的.faq-answer显示/隐藏,不会影响其他.expandIcon和对应的问答模块

内容的提问来源于stack exchange,提问作者Usman Zafar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:25:12