如何防止Ajax触发的脚本破坏jQuery的song_link数据元素?
解决思路与修改后的脚本
核心问题是脚本重复执行时,会把已改为#的href重新存入song_link,覆盖原始链接。只需添加判断:仅处理未存储过原始链接的元素。
修改后的jQuery脚本
// 只处理还没存储过原始链接的.sm2_button元素 $('a.sm2_button:not([data-song-link])').each(function() { var $this = $(this); // 把原始href存入data属性 $this.data('song_link', $this.attr('href')); // 将页面上的href替换为# $this.attr('href', '#'); });
关键说明
- 用
:not([data-song-link])选择器过滤已处理过的元素,避免重复操作 - 首次加载时,所有符合条件的元素都会被处理,完成链接隐藏和原始地址存储
- Ajax调用后,仅处理新生成的未被操作过的
.sm2_button元素,不会破坏已有数据
内容的提问来源于stack exchange,提问作者MMT
相关产品推荐
相关产品推荐

