jQuery技术问询:如何为选择器内元素设置独立属性以替换SVG图片路径
批量替换SVG图片路径的解决方案
没问题,我来帮你完成这个批量替换SVG路径的任务。你已经成功选中了页面上所有的SVG图片元素,接下来只需要修改路径中的目录部分,再批量更新每个元素的src属性就可以了。
方法一:直接遍历元素修改(推荐)
这种方式更简洁高效,不需要额外存储路径数组,直接在遍历每个SVG元素时完成路径替换:
// 你已经获取到的所有SVG图片元素 $.svgSelector = $(document).find('img[src$=".svg"]'); // 遍历每个元素,替换路径并更新src $.svgSelector.each(function() { const $currentImg = $(this); const originalSrc = $currentImg.attr('src'); // 将原路径中的"img/"替换为"img/icon-black/" // 如果你担心路径中出现多个"img/",可以用正则只替换开头的:/^img\// const newSrc = originalSrc.replace('img/', 'img/icon-black/'); // 设置新的图片路径 $currentImg.attr('src', newSrc); });
方法二:基于你已有的newSources数组补全
如果你想沿用之前的newSources数组逻辑,可以这样补全代码:
$.svgSelector = $(document).find('img[src$=".svg"]'); // 生成所有新路径的数组 var newSources = $.svgSelector.map(function(){ const originalSrc = $(this).attr("src"); return originalSrc.replace('img/', 'img/icon-black/'); }).get(); // 遍历元素,逐个设置新的src属性 for(var i = 0; i < $.svgSelector.length; i++) { $($.svgSelector[i]).attr('src', newSources[i]); }
注意事项
- 如果你的SVG路径是绝对路径(比如
/img/xxx.svg),记得把替换字符串改成'/img/'和'/img/icon-black/',保证路径匹配正确。 - 用正则表达式
/^img\//(或/^\/img\//对应绝对路径)可以确保只替换开头的目录,避免意外替换路径中间的相同字符串。
内容的提问来源于stack exchange,提问作者Zebrastian
相关产品推荐
相关产品推荐

