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

jQuery如何隐藏包含span字段名的空内容列表项(li)?

解决jQuery隐藏包含空属性的li元素问题

我懂你的问题啦!你现在的麻烦是li里带着字段名的span标签,导致哪怕属性值是空的,整个li的文本长度也不为0,原来的脚本根本判断不出来。别急,给你几个实用的解决方案:

首先先假设你的HTML结构大概是这样的(应该和你的实际情况匹配):

<ul>
  <li><span>Product Name:</span> Super Widget</li>
  <li><span>Barcode:</span></li>
  <li><span>Notes:</span></li>
  <li><span>Price:</span> $29.99</li>
</ul>

方案一:过滤掉span标签,检查剩余文本

这个方法最通用,直接获取li里除了字段名span之外的所有文本,去除空格后判断是否为空:

$('ul li').each(function() {
  // 获取li中除span外的所有文本,去除首尾空格
  const valueContent = $(this).contents().not('span').text().trim();
  // 如果剩余文本为空,就隐藏当前li
  if (valueContent.length === 0) {
    $(this).hide();
  }
});

方案二:给属性值单独加容器(更可靠)

如果可以修改HTML结构,给属性值单独加个class容器,比如<span class="property-value">,那判断起来会更精准:
修改后的HTML:

<ul>
  <li><span>Product Name:</span> <span class="property-value">Super Widget</span></li>
  <li><span>Barcode:</span> <span class="property-value"></span></li>
  <li><span>Notes:</span> <span class="property-value"></span></li>
</ul>

对应的jQuery代码:

$('ul li').each(function() {
  if ($(this).find('.property-value').text().trim().length === 0) {
    $(this).hide();
  }
});

方案三:用正则匹配去掉字段名

如果你的字段名都是「XXX:」这种格式,可以直接用正则把字段名部分去掉,再检查剩余内容:

$('ul li').each(function() {
  const fullText = $(this).text().trim();
  // 去掉开头的「字段名:」部分,剩下的就是属性值
  const propertyValue = fullText.replace(/^.*:\s*/, '').trim();
  if (propertyValue.length === 0) {
    $(this).hide();
  }
});

这几个方案都能帮你在保留span字段名的前提下,精准隐藏那些属性值为空的li元素,你可以根据自己的实际HTML结构选最适合的~

内容的提问来源于stack exchange,提问作者sigur7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:17:12