【问题标题】:Search bar not working in JQuery搜索栏在 JQuery 中不起作用
【发布时间】:2017-04-11 19:11:14
【问题描述】:

我使用 JQuery 创建了一个简单的搜索栏,唯一的问题是它隐藏了所有内容,即使我输入了正确的名称,并且由于某种原因,当我删除输入时它不会返回隐藏的项目。

任何帮助将不胜感激。

$("#search").keyup(function(){
    var uInput = $("#search").val();
    var id = $(".gali").attr("id");
    if (uInput != id){
        $(".gali").hide();
    } else {
        $(".gali").show();
    }
});

    <div id="container">
        <div id="search-bar">
            <input type="text" placeholder="Search..." id="search">
        </div>

        <ul id="pList">
            <li class="gali">
                <img src="phot/plum01.jpg" class="pimg">
            </li>
            <li class="gali">
                <img src="phot/plum02.jpg" class="pimg">
            </li>
            <li class="gali" id="flowers">
                <img src="phot/plum03.jpg" class="pimg">
            </li>
            <li class="gali">
                <img src="phot/plum04.jpg" class="pimg">
            </li>
            <li class="gali" id="flowers">
                <img src="phot/plum05.jpg" class="pimg">
            </li>
            <li class="gali" id="flowers">
                <img src="phot/plum06.jpg" class="pimg">
            </li>
          </ul>

【问题讨论】:

  • 请提供html代码。如果您构建一个 plunker 或类似的东西,这将非常有用。 plnkr.co/edit
  • 嗨,Doc,欢迎来到 Stack Overflow。我们需要查看您的其余代码。寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。请参阅:如何创建minimal reproducible example
  • 对于这种简单化的东西,plnkr、jsFiddle、codepen 等几乎没有必要。只需使用内嵌的 web sn-p 工具即可。
  • 您的代码运行良好。
  • @RaphaelParreira 不要推荐可以使用的远程站点Stack Snippets

标签: jquery html css search frontend


【解决方案1】:

您的页面上可能有多个class="gali"元素。

$('.gali').hide()and$('.gali').show()将隐藏或显示所有此类元素。

为避免这种情况,您可以实现一个循环并单独检查 everyclass="gali"element:

$('.gali').each(function(){
    var $this = $(this);
    if($this.attr('id') == uInput.val()) {
        $this.show();
    } else {
        $this.hide();
    }
});

编辑:或者,正如 Santi 在下面建议的那样,有一个更好的解决方案:隐藏所有class="gali"elements,然后显示有问题的 id。

$(".gali").hide();
$("#"+id).show();

使用此代码,如果您的 id 不存在,则根本不会显示。

【讨论】:

  • 如果这实际上是 OP 试图做的 - 根据 ID 隐藏类 .gali 的元素,几乎不需要循环。
  • ^ 我想到的确切解决方案。虽然我还是有点好奇id OP 试图通过使用$(".gali").attr("id") 来获取什么。
  • @Santi:真实的故事。你的解决方案更好。以上更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-18
  • 2021-10-04
  • 2018-06-05
  • 2018-03-12
相关资源
最近更新 更多