2010-08-03 8 views
0

J'ai une fonction jQuery qui effectue anitmation slideDown sur un certain élément lorsque vous cliquez dessus comme celui-cijQuery slideDown sélectionnez certains éléments?

$('.Minimize').click(function() { 
      $('.ContentTD').slideUp('slow', function() { 
       //animation complete 
      }); 
     }); 

le script ci-dessus est écrit à l'intérieur d'un contrôle utilisateur Web. Le problème est que si une page contient plusieurs instances du contrôle, la fonction slideDown est exécutée dans toutes les instances de la page.

Je souhaite que la fonction soit exécutée uniquement dans le contrôle sur lequel je clique.

Comment faire? grâce

Répondre

1

Vous pouvez monter au conteneur, ils sont tous les deux relativement et trouver l'élément, comme ceci:

$('.Minimize').click(function() { 
    $(this).closest('.container').find('.ContentTD').slideUp('slow'); 
}); 

Cela suppose quelque chose comme markup ceci:

<div class="container"> 
    <button class="Minimize">Minimize</button> 
    <div class="ContentTD">Content</div> 
</div> 

Tant comme les deux sont à l'intérieur d'un conteneur avec une classe ou un autre attribut que vous pouvez identifier, vous pouvez utiliser .closest() et .find() pour obtenir le .ContentTD uniquement en que conteneur. Ou, s'ils sont frères et sœurs comme l'exemple simple ci-dessus, .siblings('.ContentTD') fonctionne, ou certains autretree traversal method, le point est d'utiliser $(this) (le .Minimize vous avez cliqué sur) et trouver l'élément relatif à cela.

+0

Merci Nick c'est exactement ce que je voulais –

Questions connexes