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
相关产品推荐
相关产品推荐

