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

如何在.div1显示内容为文本而非图片时隐藏.div2?

问题:根据.div1显示内容类型隐藏.div2

HTML代码

<div class="div1">
    <div class="child1">Some text</div>
    <div class="child2">Some text</div>
    <div class="child3"><img src="#" /></div>
</div>

<div class="div2">...</div> <!-- 我想要隐藏.div2 -->

CSS代码

.div1 {  }

.child1 { display: none }
.child2 { display: block }
.child3 { display: none }

.div2 {  }

需求

当.div1中当前处于显示状态的内容为文本而非img时,隐藏.div2。

尝试的无效代码

if ($(".div1:not(img)").length) { 
$(".div2").hide(); }) 

解决方案

你之前的代码逻辑有误:$(".div1:not(img)")是判断.div1元素本身不是img标签,但.div1本来就是容器div,这个条件永远成立,所以无法正确触发隐藏逻辑。

正确的思路是针对.div1下可见的子元素进行判断,检查这些可见元素中是否包含img标签:

方法一:检查可见子元素是否包含img

// 获取.div1下可见的直接子元素
const visibleChild = $(".div1 > div:visible");
// 如果可见子元素里没有img,就隐藏.div2
if (!visibleChild.find("img").length) {
  $(".div2").hide();
}

方法二:直接筛选不含img的可见子元素

// 找到.div1下可见且不包含img的子元素,若存在则隐藏.div2
if ($(".div1 > div:visible:not(:has(img))").length) {
  $(".div2").hide();
}

这两种方法都能准确判断当前.div1显示的是文本内容,此时执行隐藏.div2的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:52:36