如何为包含特定文本的锚点标签添加class?代码运行全部元素变红如何解决
错误原因
- 变量名引用错误:你定义的存储目标名称的变量是
currentname,但代码中使用了未声明的name变量 - 筛选逻辑错误:
$('.names a').text(参数)的作用是批量修改所有选中的a标签的文本内容,而非筛选出文本符合要求的元素。这行执行后所有a标签的文本都被统一修改,后续addClass自然会作用到全部a标签上,导致全部变红。
修正方案
使用jQuery的filter()方法做精确文本匹配即可,代码如下:
// 读取当前名称并去除首尾空白,避免多余空格导致匹配失败 var currentname = $('.currentname').text().trim(); // 筛选出文本完全匹配的a标签再加类 $('.names a').filter(function() { return $(this).text().trim() === currentname; }).addClass('red');
可选方案(模糊匹配)
如果允许匹配包含目标文本的元素,可以直接用:contains选择器,注意该选择器为模糊匹配,只要元素文本包含目标字符串就会命中,比如文本为Jackson的a标签也会匹配到Jack:
var currentname = $('.currentname').text().trim(); $('.names a:contains("' + currentname + '")').addClass('red');
内容的提问来源于stack exchange,提问作者john
相关产品推荐
相关产品推荐

