2010-08-25 7 views
2

J'utilise le code suivant pour masquer et afficher une boîte sur un groupe de résultats de recherche. Chaque résultat a sa propre bascule et sa propre case à afficher et masquer. Le problème que j'ai est que cliquer sur l'un des boutons bascule affichera et cachera TOUTES les cases de la page et PAS seulement la case correspondant au résultat. Comment puis-je faire ceci?Jquery .next() aide

Merci

jQuery(document).ready(function ($) { 

    $("div.MoreResultsTrigger").click(function (e) 
    { 
     $("div.MoreResultsTrigger").next().slideToggle('fast'); 
    }); 

}); 

CODE MIS À JOUR AU MOYEN FLOTTANT

$('a.MoreResultsTrigger').hover(
     function() { 
      $(this).next().show(); 
     }, 
     function() { 
      $(this).next().hide(); 
     } 
    ); 

Répondre

5

Utilisez le mot-clé this puisque vous ne voulez cacher l'élément à côté de celui que vous êtes en cliquant sur.

jQuery(document).ready(function ($) { 

    $("div.MoreResultsTrigger").click(function (e) 
    { 
     $(this).next().slideToggle('fast'); 
    }); 

}); 
+0

Avoir et question supplémentaire. J'ai changé le code pour utiliser Hover, quand aussi besoin de boîte pour rester affiché si l'utilisateur survole la boîte elle-même quand il apparaît. Vérifiez ma question d'origine pour le code mis à jour. – Cameron

+0

Je ne suis pas tout à fait sûr de comprendre ... – Marko

+0

Si un utilisateur survole le Trigger, il montrera la prochaine div qui est ma boîte. Mais si l'utilisateur survole la case, il restera affiché au lieu de disparaître car il a supprimé le pointeur sur le déclencheur. – Cameron

3

non testé, mais essayer:

$("div.MoreResultsTrigger").click(function (e) 
    { 
     $(this).next().slideToggle('fast'); 
    }); 
3

utilisation $(this).next().slideToggle('fast'); qui s'appliquera à seulement celui que vous avez sélectionné. En ce moment, il applique le slideToggle à TOUS les div.MoreResultsTrigger.

2

Essayez ceci:

jQuery(document).ready(function ($) { 

    $("div.MoreResultsTrigger").click(function() 
    { 
     $(this).next('.toggleable').slideToggle('fast'); 
    }); 

}); 

L'ajout de la classe « .toggleable » à la .next() est juste au cas où vous pourriez avoir d'autres choses entre les deux que vous ne voulez pas passer. Vous devez bien sûr ajouter la classe .toggleable à tous les éléments qui vous intéressent. Bien sûr, vous pouvez remplacer, et devrait, remplacer toggleable par un nom qui a plus de sens.

+1

qu'est-ce qui est modifiable? – Marko