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

Intraweb模态框中获取点击<td>ID并通过Ajax传递的方法咨询

问题解决:模态框内表格TD点击无法获取ID的修正

你的问题出在事件绑定的目标和事件委托写法错误:

  • 原代码把点击事件绑定在了#View这个模态框容器div上,点击时$(this)指向整个div,用closest("td")根本找不到对应的单元格(div和td不存在祖先关系)。
  • 主页面的写法能生效,是因为直接绑定在了已存在的table td上,但如果主页面表格是动态创建的,这种写法同样会失效,只是你的主页面刚好是静态元素。

正确写法

把模态框的事件绑定改成事件委托,监听模态框内的td点击,同时简化获取ID的逻辑:

// 模态框内表格的点击事件(支持动态创建的td)
$('#View').on('click', 'td', function () {
    var tdId = $(this).attr('ID');
    ajaxCall("IH", "Params=VW" + tdId);
});

// 主页面表格的点击事件(如果是动态创建的,建议也改成事件委托写法)
$(document).on('click', 'table td', function () {
    var c = $(this);
    var tdId = c.attr('ID');
    if (Number(tdId) > 0) { 
        c.addClass("Select"); 
    }
    ajaxCall("IH", "Params=" + tdId);
});

关键修正点

  1. 事件委托目标调整:$('#View').on('click', 'td', function(){...}) 表示在#View容器内,监听所有td的点击事件,不管td是静态还是运行时动态生成的都能触发。
  2. 直接获取当前元素:点击td时$(this)就是被点击的单元格,不需要用closest("td")(closest是向上查找最近的匹配祖先元素,这里本身就是td,完全多余)。
  3. 主页面的优化:如果主页面的表格也是运行时动态创建的,建议改成$(document).on('click', 'table td', ...)这种事件委托写法,避免静态绑定失效的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:47:19