2010-09-24 3 views
4

J'ai un accordéon jQuery que je suis en train de styliser en utilisant les thèmes ui. Ma question est, comment puis-je avoir une section qui n'a pas de sous-sections et ne s'étend pas lorsque survolée par la souris? J'utilise mouseover comme déclencheur.Contrôle d'accordéon jQuery sur les sections vides

Par exemple:

alt text

La section d'accueil n'a rien en dessous. Je voudrais qu'il reste effondré quand survolé. Une fois cliqué, il devrait naviguer vers la cible href (ce qu'il fait).

Code Init:

<script type="text/javascript"> 
    $(function() { 
     $("#accordion").accordion({ 
      event: "mouseover", 
      alwaysOpen: false, 
      autoHeight: false, 
      navigation: true, 
     }); 
    }); 
</script> 

Markup (abrégée par souci de brièveté):

<div id="accordion"> 
    <h3><a class="heading" href="~/Home">Home</a></h3> 
    <div> 
    </div> 
    <h3><a href="#">Browse</a></h3> 
    <div> 
     <li><a href="http://www.php.net/">PHP</a></li> 
     <li><a href="http://www.ruby-lang.org/en/">Ruby</a></li> 
     <li><a href="http://www.python.org/">Python</a></li> 
     <li><a href="http://www.perl.org/">PERL</a></li> 
     <li><a href="http://java.sun.com/">Java</a></li> 
     <li><a href="http://en.wikipedia.org/wiki/C_Sharp">C#</a></li> 
    </div> 
</div> 

La feuille de style est directement à partir de la bibliothèque de thème jQuery ui.

Merci d'avance.

Rick

Répondre

1

J'ai fait quelques modifications pour que cela fonctionne, en ajoutant principalement un identifiant à votre en-tête et collapsible: true à l'accordéon.

Ensuite, ajoutez-les après avoir créé votre accordéon:

$('#home').unbind('mouseover');//don't accordion on mouse over 
$('#accordion').accordion('activate', 0);//close the home accordion 

Pour un exemple de travail, voir ici: http://jsfiddle.net/ryleyb/mywfV/

+0

activer, pas actif? – nakajuice

+0

@starovoitovs - http://jqueryui.com/demos/accordion/#method-activate – Ryley

0

Vous pourriez lier un gestionnaire d'événements à l'événement change de l'accordéon: http://jqueryui.com/demos/accordion/#event-change. Quand il se déclenche, vérifiez l'en-tête Home et si c'est l'en-tête sélectionné, fermez-le en utilisant la méthode activate: http://jqueryui.com/demos/accordion/#method-activate

+0

Je n'ai pas trouvé cela a fonctionné - l'événement de changement est déclenché après l'en-tête est déjà ouvert, donc vous n'êtes pas vraiment "empêcher" d'ouvrir du tout – Ryley

Questions connexes