2017-07-19 3 views
0

Je suis en train d'ajouter un texte que lorsque vous cliquez dessus, cache l'élément auquel il est ajouté, mais reste visible, et puis quand on clique dessus à nouveau, fait l'élément réapparaîtra:jquery ajouter une cliquable fonction

jQuery(document).ready(function($){ 
    $('<span class="click-me">Click Here For Filter Options</span>').insertBefore('.searchandfilter'); 

    $(".click-me").click(function() { 
     $(".searchandfilter").css("height", "0px"); 
    }); 
} 
}); 

Je sais que je devrais utiliser la fonction toggle mais je suis un peu perdu quant à la façon de l'implémenter car je n'arrive même pas à cacher l'élément en cliquant.

Merci d'avance!

+0

Si un élément est caché, tous les enfants seront cachés. – Taplar

+0

et si j'utilise .insertBefore()? ou éventuellement utiliser la position absolue sur l'enfant et simplement réduire la hauteur du parent à 0? –

+1

si l'élément existe en dehors de l'élément caché, bien sûr. mais tant que c'est un enfant d'un élément qui est affiché: aucun, quel que soit ce que vous faites, il sera caché. – Taplar

Répondre

0

Un } supplémentaire était cause de casser le code et l'utilisation toggle() fait afficher et masquer travailler.

Voici la version fixe de votre code:

jQuery(document).ready(function($){ 
    $('<span class="click-me">Click Here For Filter Options</span>').insertBefore('.searchandfilter'); 

    $(".click-me").click(function() { 
     // Use toggle instead 
     //$(".searchandfilter").css("height", "0px"); 
     $(".searchandfilter").toggle(); 
    }); 
//} /* extra, cause of breaking */ 
}); 

Ceci est une autre façon:

jQuery(document).ready(function($){ 
    var $clickMe = $('<span/>',{ 
     class:'click-me', 
     text:'Click Here For Filter Options' 
    }); 

    $clickMe.insertBefore('.searchandfilter'); 

    $(".click-me").click(function() { 
     $(".searchandfilter").toggle(); 
    }); 

}); 

JsFiddle

+0

Merci cela fonctionne parfait! –

0

Dans votre exemple, vous avez un } égaré, ce qui est probablement la raison pour laquelle cela ne fonctionne pas.

Voici un exemple de travail, que j'ai un peu amélioré.

codepen

toggle jQuery fonctionne bien ici.

$(function() { 
 
    $('<span>Show/Hide Filter Options</span>') 
 
     .insertBefore('.searchandfilter') 
 
     .click(function() { 
 
      $(".searchandfilter").toggle(); 
 
     }); 
 
});
<div class="searchandfilter">Some content</div>