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

使用jQuery实现文本搜索时图片不显示的问题求助

解决jQuery文本搜索时图片不显示的问题

你的核心问题是当前代码会遍历#myDIV2下的所有子元素(包括图片),而图片元素的.text()内容为空,搜索时会被错误隐藏。只需要调整过滤的目标元素,确保针对整个卡片容器进行判断,就能同时显示匹配的文本和图片。

修正后的完整代码

<input type="text" id="myInput2"  placeholder="Search for names.." title="Type in a name" class="form-control" aria-label="Sizing example input" aria-describedby="inputGroup-sizing-lg">
<div class="container">
    <div class="col-xs-12">
        <div class="tab-content col-lg-offset-0 " id="myDIV2">
            <div role="tabpanel" class="tab-pane active" id="page1">
                <a href="kohlarn.html">
                    <div class="col-sm-6 col-md-4">
                        <div class="thumbnail">
                            <img src="img/sea/Koh Larn/3.jpg" alt=" Koh Larn" class="img-responsive" >
                            <div class="caption">
                                <h3>Koh Larn <p style="font-size: 0%;"> Koh Larn </p></h3>
                                <p>text </p>
                                <div class="btn-toolbar text-center">
                                    <a href="kohlarn.html" role="button" class="btn btn-primary pull-right">Details</a>
                                </div>
                            </div>
                        </div>
                    </div>
                </a>
                <!-- 可添加更多卡片示例 -->
            </div>
        </div>
    </div>
</div>
<script>
$(document).ready(function(){
    $("#myInput2").on("keyup", function() {
        var value = $(this).val().toLowerCase();
        // 针对每个卡片容器进行过滤,而非所有子元素
        $("#myDIV2 .col-sm-6.col-md-4").filter(function() {
            // 获取卡片内所有文本内容,统一转小写后判断是否匹配搜索值
            var cardText = $(this).find("*").text().toLowerCase();
            $(this).toggle(cardText.indexOf(value) > -1);
        });
    });
});
</script>

关键修改说明

  • 修复HTML结构错误:补全了<div class="thumbnail">的闭合标签,避免DOM结构异常
  • 调整过滤目标:从$("#myDIV2 *")改为$("#myDIV2 .col-sm-6.col-md-4"),只针对完整卡片容器做显示/隐藏控制
  • 优化文本匹配逻辑:用$(this).find("*").text()获取卡片内所有文本内容,确保能匹配到标题、描述等所有可搜索文本,再统一转小写后和搜索值对比

修改后,搜索时会根据卡片内的文本匹配情况,整体显示或隐藏包含图片和文本的卡片,不会单独隐藏图片元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:00:53