2010-04-06 5 views
0

Exemple: http://vincent-massaro.com/map/près accordéon horizontal JQuery sur clic

Actuellement, le script vous permet de cliquer sur un morceau de l'accordéon pour l'ouvrir, mais il est mis à fermer sur mouseleave. Lorsque je mets le mouseleave à .click, il devient confus et ne sait pas dans quel état il se trouve. Je veux faire en sorte que vous puissiez cliquer pour l'ouvrir, et cliquez pour le fermer, au lieu de mouseleave. Le code qui contrôle cela est ci-dessous, et le script complet est dans haccordion.js lié dans la source de la page. Si quelqu'un pouvait m'aider à modifier ce script, je serais très reconnaissant! Merci d'avance.

$target.click(function(){ 
      haccordion.expandli(config.accordionid, this) 
        config.$lastexpanded=$(this) 
    }) 
      if (config.collapsecurrent){ //if previous content should be contracted when expanding current 
        $target.mouseleave(function(){ 
          $(this).stop().animate({width:config.paneldimensions.peekw}, config.speed) 
    }) 
    } 
+0

considèrent utiliser l'accordéon jquery.ui – vittore

+0

aussi comment il * devrait * fonctionner? – vittore

Répondre

0

essayez d'utiliser cette

$('.accordion-item-header').click(function() { 
    var item = $(this).parent().find('.accordion-item-body'); 
    item.toggleClass('open').animate({ 
     width:item.hasClass('open') ? 0: 100 
    }, 100).toggleClass('open'); 
}); 
+0

Pouvez-vous expliquer comment l'utiliser? Je suis un débutant JQuery et je ne sais pas comment le prendre et le faire fonctionner avec le script que j'utilise. – Vincent

0

Vous pouvez définir une variable booléenne pour représenter l'accordéon est ouvert ou non, et il suffit de vérifier en cliquant dessus. (Vous aurez besoin de basculer l'état variable clic aussi)

Edit:

Ok essayer. Définir une variable globale booléenne (hors événement click) comme ceci:

var accordion_expanded = false; 

Ensuite, au sein de votre événement click faire quelque chose comme ceci: (je ne l'ai pas testé ce que vous pourriez donc avoir à masser un peu pour l'adapter à votre circonstance)

dans la fonction où vous développez votre accordéon a mis ceci:

accordion_expanded = true; 

Et dans la fonction où vous contractez votre accordéon faire un

if(accordion_expanded == true){ 
    //Contract accordion code goes here 

    accordion_expanded == false; 
} 

Bonne chance!

+0

Merci pour l'info. Malheureusement, je suis un débutant javascript/JQuery et je n'ai aucune idée de comment écrire du code pour le faire. Des suggestions ou des exemples de code? – Vincent