jQuery如何筛选包含HTML实体对勾符号的td并高亮对应表格行
你代码失效的核心原因是,✓ 是HTML实体编码,浏览器渲染页面时会把它解析为实际的对勾字符「✓」,你拿实体编码字符串和.text()取到的渲染后纯文本比对,自然匹配失败。
而.html()方法的返回值存在浏览器兼容性差异,部分浏览器会返回解析后的字符,部分会返回原始实体编码,不适合用来做这类匹配判断。
方案1:直接匹配解析后的对勾字符
这是最直观的方案,注意加上.trim()去除td内容前后可能存在的空格、换行符,避免匹配失败:
$('#farm td').filter(function() { if ($(this).text().trim() === '✓') { $(this).closest('tr').css('background-color', 'yellow'); } });
方案2:通过Unicode编码匹配(避免特殊字符显示异常)
如果担心不同环境下对勾字符的编码问题,可以直接用字符的Unicode值判断,对勾对应的十进制Unicode编码就是10003:
$('#farm td').filter(function() { const content = $(this).text().trim(); // 取内容第一个字符的Unicode编码比对 if (content && content.charCodeAt(0) === 10003) { $(this).closest('tr').css('background-color', 'yellow'); } });
内容的提问来源于stack exchange,提问作者user16036297
相关产品推荐
相关产品推荐

