2010-11-09 3 views
5

J'essaie de créer un effet de bascule en utilisant les boutons + et - pour afficher et masquer les divs. Et par exemple http://theodin.co.uk/tools/tutorials/jqueryTutorial/index.htmlUtilisation de la bascule jquery sur des div individuels

C'est le script que je utilise

$(function(){ 
     $('.block').hide(); 
      $('#show').toggle(function(){ 
        $('.block').show(); 
        $(this).attr("src","images/minus.jpg"); 
      },function(){ 
       $('.block').hide(); 
       $(this).attr("src", "images/plus.jpg"); 
      }); 
    }); 

Le code HTML

<div id="show"> Open <img id="show" src="images/plus.jpg"/> </div> 
    <div class="block"> 
     Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
    </div> 

Il fonctionne très bien avec un div mais j'ai plusieurs et quand je clique sur un, ils montrent tous . Y at-il un moyen de les basculer individuellement en utilisant le code que j'ai?

Répondre

1

Modifier le show ID à un class comme ceci:

<div class="show"> Open <img src="images/plus.jpg" /> </div> 
<div class="block">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</div> 

<div class="show"> Open <img src="images/plus.jpg" /> </div> 
<div class="block">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</div> 

Alors le jQuery devient:

$('.show').toggle(function(){ 
    $(this).next('.block').show(); 
    $(this).children("img").attr("src","images/minus.jpg"); 
},function(){ 
    $(this).next('.block').hide(); 
    $(this).children("img").attr("src", "images/plus.jpg"); 
}); 

Here's an example.

+0

Merci! Savez-vous si jquery permet de masquer() le bloc div si par exemple on clique n'importe où en dehors du bloc ou en change un autre? – user499630

+0

btw, j'ai mis à jour le code avec les URL de l'image réelle, mais les images ne changent pas – user499630

+1

Mon mauvais. Je n'ai pas testé avec des images. Nous utiliserons 'children (" img ")' pour faire cela. J'ai mis à jour l'exemple ci-dessus pour le refléter. –

1

Vous modifiez le src de l'élément #show, alors que vous devriez le changer sur son enfant <img>.

$(function() { 
    $('.block').hide(); 
    $('#show').toggle(function(){ 
     $('.block').show(); 
     $(this).children('img').attr("src","images/minus.jpg"); 
    },function(){ 
     $('.block').hide(); 
     $(this).children('img').attr("src", "images/plus.jpg"); 
    }); 
}); 

Il utilise .children() pour obtenir l'élément enfant <img> afin que vous puissiez changer sa source.

En outre, le <img> a le même ID que son parent. Ceci n'est pas autorisé. Les ID doivent être uniques.

+1

En outre, la div a et ID de "show", ainsi comme img. Regardez, tout l'équipage est dans ce soir! – karim79

+0

@ karim79 - Vrai. Juste terminé la mise à jour. : o) – user113716

+0

Merci pour le code! J'ai essayé mais j'ai eu le même problème pour une raison quelconque. Peut-être que mon HTML est faux. Cependant, le code fourni par Gert semble fonctionner. – user499630