2017-04-11 1 views
-1

J'ai simplement créé une barre de recherche en utilisant JQuery seul problème est qu'il cache tout, même lorsque j'ai entré le nom correct et pour une raison quelconque lorsque je supprime l'entrée, il ne retourne pas les éléments cachés.La barre de recherche ne fonctionne pas dans JQuery

Toute aide serait appréciée.

$("#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> 
+3

S'il vous plaît, donnez-nous le code html. Ce serait très utile si vous construisiez un plunker ou quelque chose comme ça. https://plnkr.co/edit/ –

+0

Salut Doc, bienvenue à Stack Overflow. Nous devons voir le reste de votre code. Les questions qui cherchent une aide au débogage («pourquoi ce code ne fonctionne-t-il pas?») Doivent inclure le comportement souhaité, un problème ou une erreur spécifique et le code le plus court nécessaire pour le reproduire dans la question elle-même. Voir: Comment créer un [mcve] –

+0

Pour quelque chose d'aussi simpliste, plnkr, jsFiddle, codepen, etc., ce n'est pas vraiment nécessaire. Utilisez simplement l'outil d'extrait de site Web en ligne. – Santi

Répondre

0

Vous pourriez avoir plusieurs class="gali" éléments sur votre page.

$('.gali').hide() et $('.gali').show() cacheront ou montreront tous ces éléments.

Pour éviter cela, vous pouvez mettre en œuvre une boucle et de vérifier tous les éléments class="gali" individuellement:

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

EDIT: Ou, comme Santi suggère ci-dessous, il y a une meilleure solution: cacher tous class="gali" éléments, puis montrer la un avec l'identifiant en question.

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

Avec ce code, si votre identifiant n'existe pas, il ne sera tout simplement pas affiché.

+0

Si ceci est en fait ce que OP essaie de faire - cacher un élément de classe '.gali', basé sur ID, une boucle est à peine nécessaire. – Santi

+4

'$ (". Gali "). Hide(); $ ("#" + id) .show(); ' – Barmar

+0

^La solution exacte que j'avais en tête. Bien que je sois encore un peu curieux de savoir ce que 'id' OP tente de récupérer en utilisant' $ (". Gali"). Attr ("id") '. – Santi