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

jQuery中$(this)未选中点击元素反而选中window对象问题排查

问题原因及解决方案

哦,这个问题我太熟悉了!问题出在你用了箭头函数来定义事件回调——箭头函数不会绑定自己的this,它会继承外层作用域的this值。

具体原因分析

你代码里的$(document).ready用了箭头函数,此时它的外层上下文this指向的是window对象。而你给click事件绑定的回调也是箭头函数,这个箭头函数不会创建自己的this上下文,直接继承了外层的window,所以$(this)自然就选中了window,而非被点击的按钮元素。

两种解决方案

方案1:将点击回调改为普通函数

普通函数在事件触发时,this会自动绑定到触发事件的元素上,这是jQuery事件回调的默认行为:

$(document).ready(() => {
  $('.delete-file').on('click', function() {
    let element = $(this);
    console.log(element); // 现在会输出预期的a.btn.btn-danger.btn-xs.delete-file
  });
});

方案2:通过事件对象获取目标元素(保留箭头函数)

如果想继续使用箭头函数,可以利用事件对象的currentTarget属性(该属性始终指向绑定事件的元素,比target更稳妥,避免选中子元素如<i>标签):

$(document).ready(() => {
  $('.delete-file').on('click', (event) => {
    let element = $(event.currentTarget);
    console.log(element); // 同样能得到正确的点击元素
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:47:29