2009-12-09 6 views
0

Sur certaines de mes pages, je souhaite que Superfish (menu plugin) déploie l'une des options de premier niveau par défaut dès que la page s'ouvre. J'ai attribué cette option ul an id = "moi", et en essayant d'implémenter la fonction "onInit", mais cela ne fonctionne pas. Quelqu'un pourrait-il regarder s'il vous plaît? Merci.Superfish pour ouvrir une option "onInit"

jQuery(function(){ 
jQuery('ul.sf-menu').superfish({ 
    onInit: function(){$('#me',this).show();}, 
    }); 
}); 

Répondre

0

Avez-vous des erreurs javascript?

problèmes possibles avec l'extrait: vous avez publié

  • onInit ne soit pas appelé pour une raison quelconque. vérifier avec alert ou console.log
  • this dans onInit n'est pas un DOMElement. Ce pourrait être un objet jquery. vérifier avec console.log

plus, vous avez une erreur de syntaxe là-dedans: la dernière propriété d'un littéral d'objet ne doit pas être suivie d'une virgule.

+0

Merci pour votre réponse, je vais essayer de vérifier ce que vous avez suggéré demain (j'ai Firebug installé mais je ne sais pas encore comment l'utiliser, je suis un nub). Aussi, je pense maintenant que je ferais mieux de trouver un moyen de passer dynamiquement un CSS "visible" à cette option avec PHP afin de le faire fonctionner avec JS désactivé? – Ted

+0

il n'y a pas grand-chose à l'utilisation basique de firebug (je n'ai pas creusé au-delà de la console et du moniteur de trafic réseau [onglets Console et Net]). oui, si vous voulez le faire fonctionner avec ou sans javascript, vous devez configurer l'état initial sans javascript. comme, changez '# me' en' .open', faites que le reste soit effondré avec css. –

0

Ok, la partie CSS était facile. Il n'utilise aucune valeur de "visibilité", il change à la place une position de boîte de "top: -999em" (pour cacher) à "top: 2.5em" (pour afficher). J'ai créé une catégorie distincte pour mon, qui est juste une copie de Superfish boîtes « affichables »:

ul.open { 
left: 0; 
top: 2.5em; 
z-index: 99; 
} 

Maintenant, il fonctionne si JS est désactivé, mais lorsque JS est activé toutes les options s'effondra de toute façon. Voici juste une des nombreuses variantes i essayé cette fois-ci:

onInit: function(){$('ul.open').addClass('ul.open');} 

et il n'a pas d'effet du tout, comme si cette classe n'existe pas.

Si je tente:

onInit: function(){$('ul.open').html('hello');} 

le mot 'bonjour' apparaît sur la place du sous-menu mouseover - mais sur mouseover, et non "onInit".