You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于关键词显示/隐藏HTML代码失效问题求助

问题原因及解决办法

你的代码问题出在jQuery的:contains()选择器无法正确处理带特殊字符的关键词,比如[aaa]里的方括号、(kk-aka)里的括号,这些字符在CSS选择器语法中有特殊含义,直接拼接会导致选择器解析错误,使得判断条件始终为真,所以元素一直显示。

解决办法是放弃:contains(),改用filter()方法手动检查元素文本内容,这样能避免特殊字符的干扰:

修改后的JavaScript代码

$(document).ready(function() {
  var dateKeyword = "[aaa]";
  // 遍历body下的所有元素,检查是否包含目标关键词
  var hasDateKeyword = $('body *').filter(function() {
    return $(this).text().includes(dateKeyword);
  }).length > 0;
  
  if (hasDateKeyword) {
    $("#date").show();
    $("#current-date").text(new Date().toDateString());
  } else {
    $("#date").hide();
  }

  var mnKeyword = "(kk-aka)";
  var hasMnKeyword = $('body *').filter(function() {
    return $(this).text().includes(mnKeyword);
  }).length > 0;
  
  if (hasMnKeyword) {
    $("#mn").show();
  } else {
    $("#mn").hide();
  }
});

对应的HTML代码(无需改动)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h2 id="date" style="display:none;">Date: <span id="current-date"></span></h2>
<h2 id="mn" style="display:none;">Upcoming Event: Asia Cup 2030</h2>

补充说明

  • filter()方法会遍历指定范围内的所有元素,用includes()检查文本是否包含关键词,不受特殊字符影响。
  • 如果只需要检查body的直接文本内容,而非所有子元素,可以把$('body *')改成$('body'),根据实际需求调整。

内容的提问来源于stack exchange,提问作者Md. Ibrahim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:58:11