如何在jQuery中对比元素文本?代码未生效问题修复求助
问题修复:匹配左右区块文本并添加类
问题根源
你当前的代码没生效,核心原因是文本的前后空白字符不一致:
- 右侧
#articleTitle的文本是Terminology two(无末尾空格) - 左侧对应
<a>的文本是Terminology two(末尾多了一个空格)
因为你用了严格相等===,这种细微的空格差异会导致匹配失败,所以active类加不上。
修复后的代码
我们只需要在获取文本时,用trim()去除前后空白字符,就能解决这个问题,同时让代码更健壮(避免其他意外的空格/换行干扰):
jQuery(document).ready(function(){ // 去除标题文本的前后空白 let headingElement = jQuery('#articleTitle').text().trim(); jQuery('.ellipsis a').filter(function(){ // 同样去除左侧链接文本的前后空白后再匹配 return jQuery(this).text().trim() === headingElement; }).addClass('active'); });
额外优化建议
如果你想让代码更简洁,也可以用箭头函数(需要确保环境支持ES6):
jQuery(document).ready(() => { const headingText = jQuery('#articleTitle').text().trim(); jQuery('.ellipsis a').filter((i, el) => jQuery(el).text().trim() === headingText).addClass('active'); });
验证效果
修改后,左侧的Terminology two链接会被正确添加active类,显示为黄色。
内容的提问来源于stack exchange,提问作者Sankar S
相关产品推荐
相关产品推荐

