Si vous n'êtes pas démenait Internet Explorer 7 ou moins, vous pouvez le faire en CSS, qui est l'endroit où il devrait être idéalement (comme il est exposé, ne se contente pas):
div.Syb> div:before
{
content: '+';
}
div.Syb> div.hidden:before
{
content: '-';
}
Ou vous pouvez jouer avec des images de fond.
Ensuite, il suffit d'utiliser toggleClass()
pour donner à votre div une classe .hidden.
Si vous voulez le faire en jQuery directement vers le haut, vous aurez probablement changer votre balisage un peu:
<div class="Syb">
<h4><span>+</span>Title One</h4>
<div id="one">Text</div>
<h4><span>+</span>Title Two</h4>
<div id="two">Text</div>
<h4><span>+</span>Title Three</h4>
<div id="three">Text</div>
</div>
Ensuite, vous pouvez simplement changer votre jQuery en tant que tel:
<script type='text/javascript'>
$(document).ready(function() {
$('div.Syb> div').hide();
$('div.Syb> h4').click(function() {
var span = $(this).children('span:first');
span.text(span.text()=='+'?'-':'+');
$(this).next('div').slideToggle('fast')
.siblings('div:visible').slideUp('fast');
});
});
</script>
merci mec .. qui a fonctionné pour moi .. j'ai besoin de comprendre le code .. qu'est-ce que les enfants («span: first»); faire ? – Hacker
Bien sûr! Les enfants (http://api.jquery.com/children/) recherchent les éléments enfants (définis ici comme 'span') de l'élément qui les a appelés, dans ce cas le H4, donc il dit "tous les tags SPAN à l'intérieur" l'étiquette H4 ". Le: first (http://api.jquery.com/first-selector/) est un pseudo-sélecteur qui dit simplement "le premier dans la liste des éléments", cela signifie que vous pourriez avoir plusieurs tags SPAN à l'intérieur du H4 et encore seulement le premier serait effectué. À l'intérieur du span.text est une déclaration conditionnelle sténographique, que vous pouvez lire plus ici: http://www.scribd.com/doc/1026312/Javascript-Shorthand-QuickReference – Keithamus
merci pour la belle explication – Hacker