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

事件委托后,如何在jQuery中获取点击的home类帖子的id?

解决动态生成帖子点击时获取ID的问题

嘿,这个问题我之前也碰到过~你现在的问题出在jQuery对象和原生DOM元素的属性调用差异上:直接用$(this).id是行不通的,因为jQuery包装后的对象本身没有id这个属性,给你几个简单可行的解决办法:

方案1:用jQuery的.attr()方法获取ID

这是最常用的获取HTML属性的方式,修改你的代码如下:

$(document).on('click','.home', function(e) { 
  e.preventDefault(); 
  e.stopPropagation(); 
  var id = $(this).attr('id'); // 用attr()获取元素的id属性
  var url = "/home/" + id; // 建议加个斜杠,避免URL变成/home123这种不规范的格式
  // 这里写你的Ajax请求逻辑,比如:
  $.ajax({
    url: url,
    method: 'GET', // 根据你的需求选请求方法
    success: function(response) {
      // 请求成功后的处理
    },
    error: function(err) {
      // 请求失败的处理
    }
  });
});

方案2:直接调用原生DOM元素的id属性

this本身就是触发点击事件的原生DOM节点,所以可以直接取它的id属性,不用转成jQuery对象,效率更高:

$(document).on('click','.home', function(e) { 
  e.preventDefault(); 
  e.stopPropagation(); 
  var id = this.id; // 直接访问原生属性
  var url = "/home/" + id;
  // 后续Ajax逻辑...
});

方案3:用jQuery的.prop()方法(适用于固有属性)

对于元素的固有属性(比如id、checked这类),用.prop()也能获取,和.attr()在这个场景下效果一致:

var id = $(this).prop('id');

额外提示

如果你的帖子ID不是存在元素的id属性里,而是用自定义的data-id属性存储的(比如HTML结构是<div class="home" data-id="post123">),那你需要用下面的方式获取:

// 用data()方法获取data-*属性
var id = $(this).data('id');
// 或者用attr()方法
var id = $(this).attr('data-id');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:19:07