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

jQuery点击事件触发但e.target.id为空问题咨询

问题分析与解决:点击标记时e.target.id为空的原因

首先得戳破你遇到的核心问题:你点击标记时,事件的目标元素并不是那个被添加了唯一ID的.pin容器div。

你用pin.uniqueId()是给外层的<div class="pin">生成并添加了唯一ID,但实际点击标记的时候,你的鼠标大概率点在了里面的<img class="pin-img">标签上——这个img标签并没有被设置ID,所以e.target.id自然就为空了。

给你几个简单直接的解决办法:

方案1:直接用this获取绑定事件的元素

因为你的事件是委托给#pic_pin来处理.pin的点击,所以this指向的就是你真正想要的那个.pin div(不管你点的是div本身还是里面的img),直接拿它的ID就行:

$('#pic_pin').on('click', '.pin', function(e){
    console.log('log: '+ this.id);
    // 也可以用jQuery的写法:$(this).attr('id')
    // 后续逻辑...
});

方案2:使用e.currentTarget替代e.target

e.currentTarget指向的是绑定了当前事件处理函数的元素,也就是.pin div,和this的作用完全一致,用它也能拿到正确的ID:

$('#pic_pin').on('click', '.pin', function(e){
    console.log('log: '+ e.currentTarget.id);
    // 后续逻辑...
});

额外小提示

jQuery的uniqueId()方法只会给你调用它的元素(也就是你创建的<div class="pin">)添加唯一ID,格式是ui-id-xxx,并不会自动给里面的子元素也加ID。下次遇到类似事件目标不符的问题,不妨先console.log(e.target)看看实际触发事件的元素到底是什么,排查起来会快很多~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:11:04