无ID场景下如何将span文本赋值给图片链接的data-group属性
问题解决说明
你当前的代码固定读取页面全局第一个<span>标签的文本,没有和每张图片所属的.two_pics父容器绑定,因此所有图片的data-group都会被设为第一个容器的KZO3,无法实现同组图片共用对应容器span文本的需求。
修正后的完整代码
$(document).ready(function() { $('.two_pics div img').each(function() { var $img = $(this); // 找到当前图片所属的.two_pics父容器 var $parentGroup = $img.closest('.two_pics'); // 读取该容器下的span文本 var groupName = $parentGroup.find('span:first').text().trim(); // 优先使用img自带的data-group,没有则用span的文本,不需要保留自带值可删除||前的逻辑 var finalGroup = $img.data('group') || groupName; // 包裹a标签 $img.wrap('<a href="' + $img.attr('src') + '" class="lightbox" data-group="' + finalGroup + '"></a>'); }); });
注意事项
- 请先修正你HTML代码中的标签错误:第二个
.two_pics内的span标签未闭合,原有代码<span>KZO4</a>需要改为<span>KZO4</span></a>,否则会导致DOM读取文本异常。 - 修正后运行代码,第一个
.two_pics下的两张图data-group都会设为KZO3,第二个.two_pics下的两张图默认会保留自带的data-group="398",如果需要统一用span文本KZO4,直接把finalGroup的赋值改为var finalGroup = groupName即可。
内容的提问来源于stack exchange,提问作者zmajster01
相关产品推荐
相关产品推荐

