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

JQuery绑定多元素点击事件获取value值遇undefined问题求助

解决点击元素获取value属性返回undefined的问题

问题根源

你遇到的undefined问题,核心原因是箭头函数的this绑定规则:箭头函数不会创建自己的this上下文,它会继承外层作用域的this,所以这里的$(this)根本不是你点击的那个.heroes-pic元素,自然拿不到对应的value属性。

解决方案

方案1:改用普通函数作为事件处理器

把箭头函数换成普通函数后,this会自动指向触发点击事件的DOM元素,这样就能正常获取属性了:

$(".heroes-pic").on("click", function() {
  const player = $(this).attr("value");
  console.log(player);
});

方案2:坚持用箭头函数?用事件对象获取元素

如果习惯用箭头函数,可以通过事件参数的currentTarget属性(始终指向绑定事件的元素)来获取目标节点,比target更稳妥(避免点击到内部的<img>导致出错):

$(".heroes-pic").on("click", (event) => {
  const player = $(event.currentTarget).attr("value");
  console.log(player);
});

额外的最佳实践:使用标准自定义数据属性

value并不是<figure>标签的标准HTML属性,虽然浏览器能兼容,但更规范的做法是使用data-*自定义属性,比如把value改成data-value:

修改后的HTML:

<div id="heroes-selection" class="row dflex justify-content-left">
  <figure id="luna" class="heroes-pic border text-danger m-3" data-value="heroes.luna">
    <img class="animated-gif">
  </figure>
  <figure id="qop" class="heroes-pic border text-danger m-3" data-value="heroes.qop">
    <img class="animated-gif">
  </figure>
</div>

对应的JS可以用jQuery的.data()方法更优雅地获取值:

// 普通函数版
$(".heroes-pic").on("click", function() {
  const player = $(this).data("value");
  console.log(player);
});

// 箭头函数版
$(".heroes-pic").on("click", (event) => {
  const player = $(event.currentTarget).data("value");
  console.log(player);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:22:02