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

JQuery修改特定数字ID图片SRC失效,求代码修改建议

问题分析与修改方案

原代码的核心问题

  • DOM元素不存在ready事件,给图片绑定该事件完全无效,$(function(){})本身就是DOM加载完成的执行入口,直接在里面处理元素即可。
  • 固定位置的字符串截取逻辑错误:slice(13)和slice(19)的取值位置是固定的,但ID里的数字位数可能变化(比如***是3位或更多),这种写法会拿到错误的内容。
  • 没有正确提取ID里的目标数字段。

修改后的代码方案

用正则表达式精准匹配ID格式,提取需要的数字:

$(function () {
    // 选择所有ID以eListPrdImage开头的图片
    $("[id^=eListPrdImage]").each(function () {
        // 正则捕获ID中的两个目标数字组
        const match = this.id.match(/eListPrdImage(\d+)_1_(\d+)/);
        if (match) {
            const num1 = match[1];
            const num2 = match[2];
            // 匹配目标数字时替换图片src
            if (num1 === '123' && num2 === '1') {
                $(this).attr("src", "img.jpeg");
            }
        }
    });
});

代码说明

  • $("[id^=eListPrdImage]")比原代码的*=更精准,只选择ID以eListPrdImage开头的元素,避免匹配到格式不符的元素。
  • 正则/eListPrdImage(\d+)_1_(\d+)/会捕获ID中对应位置的连续数字,分别对应你需要的**和最后一位。
  • 用each()遍历所有匹配的图片,逐个检查ID并替换符合条件的图片地址。

如果图片是动态加载(比如AJAX渲染),需要监听DOM变化来处理新增元素:

$(function () {
    // 监听DOM新增元素,处理符合条件的图片
    $(document).on('DOMNodeInserted', "[id^=eListPrdImage]", function () {
        const match = this.id.match(/eListPrdImage(\d+)_1_(\d+)/);
        if (match && match[1] === '123' && match[2] === '1') {
            $(this).attr("src", "img.jpeg");
        }
    });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:03:20