检查href含dnlink的链接添加rel=sponsored,jQuery代码失效如何解决?
代码不生效的常见原因及修复方案
原因1:代码执行时DOM未完成加载
如果你把这段JS放在<head>标签里,执行时页面的<a>标签还没渲染到DOM树中,$("a")取不到任何元素,自然不会生效。
修复方法:把代码包裹在jQuery的DOM就绪回调中,确保DOM完全加载后再执行逻辑,同时补充href存在性判断,避免无href属性的a标签触发indexOf报错打断执行:$(document).ready(function() { $("a").each(function() { const link = $(this).attr("href") if(link && link.indexOf("dnlink") > -1) { $(this).attr("rel","sponsored"); } }); })也可以直接把JS代码放到
</body>闭合标签之前,同样能保证执行时DOM已经加载完成。原因2:待处理的a标签是动态生成的
如果目标a标签是页面加载完成后,通过接口请求、用户交互等逻辑动态插入到页面中的,页面加载时执行的遍历逻辑不会覆盖后续新增的元素。
修复方法:在动态生成a标签的逻辑执行完成后,重新调用一次上述遍历代码;如果无法确定动态插入时机,可以用MutationObserver监听DOM节点变化,自动识别新增的a标签做处理。原因3:jQuery未正确引入或者$符被占用
可以打开浏览器控制台输入$,检查返回结果是不是jQuery对象,如果返回报错或者其他对象,说明jQuery没有引入成功,或者$别名被其他库占用,把代码里的$替换成jQuery即可。
内容的提问来源于stack exchange,提问作者Paolo Battiloro
相关产品推荐
相关产品推荐

