2010-09-19 5 views
0

Je développe une application web en utilisant le Framework Joomla. La fonction d'accordéon de l'interface utilisateur jQuery ne fonctionne pas pour moi. L'erreur signalée par Firebug est que .accordion n'est pas une fonction. J'ai lu beaucoup de pages traitant de diverses erreurs similaires mais je n'ai pas trouvé de solution.Pourquoi le rapport d'erreur Firebug dit-il: jQuery ("# ​​accordéion"). Accordéon n'est pas une fonction?

Voici ce que j'ai dans le modèle pour la vue de mon élément:

$document =& JFactory::getDocument();  
$document->addScript('/includes/js/jquery-1.4.2.js'); 
$document->addScript('/includes/js/jquery-ui-1.8.4.custom.min.js'); 
JHTML::script('includes/js/pfm_main_ui.js', ''); 
$document->addCustomTag('<script type="text/javascript">jQuery.noConflict();</script>' ); 

Voici mon javascript inclus (pfm_main_ui.js):

jQuery(document).ready(function() { 
    jQuery('#accordion').accordion( 
     { 
      header: "h2" 
     }); 
     }) 

Voici html pour l'accordéon dans le modèle:

<div id="accordion"> 
<div> 
<h2><a href="#">Header 1</a></h2> 
<div id="contentPanel_1">...content ... 
</div> 
</div> 
<div> 
<h2><a href="#">Header 2</a></h2> 
<div id="contentPanel_2">...content ... 
</div> 
</div> 
<div> 
<h2><a href="#">Header 3</a></h2> 
<div id="contentPanel_3">...content ... 
</div> 
</div> 
<div> 
<h2><a href="#">Header 4</a></h2> 
<div id="contentPanel_4">...content ... 
</div> 
</div> 
</div> 

Autres infos:

Joomla par défaut utilise Mootools, donc je dois appeler jQuery.noConflict() à utiliser jQuery. Je crois que cela peut être d'où vient l'erreur, mais ne peut pas résoudre. Toute aide est très appréciée!

+0

Je pense qu'il vous manque un fichier js à inclure. comme ceci: $ document-> addScript ('/includes/js/jquery-1.4.2.js'); vous devez trouver le fichier qui a la fonction d'accordéon et inclure ce fichier. –

Répondre

0

Quelques réflexions:

  1. Qu'est-ce que le HTML ressemble à une source de vue rapide? (Ctrl + U dans FF et Chrome) Les fichiers javascript sont-ils chargés dans le bon ordre?

  2. Le fichier javascript de l'interface utilisateur JQuery personnalisé référencé par jquery-ui-1.8.4.custom.min.js peut ne pas contenir la déclaration de classe pour le composant Accordion UI. Essayez de charger la bibliothèque JQuery UI complète à partir d'un CDN (ici Microsoft: http://ajax.microsoft.com/ajax/jquery.ui/1.8.5/jquery-ui.min.js) et voyez si cela corrige l'erreur.

+0

Merci pour les idées. 1. Quel devrait être le bon ordre? L'appel à jQuery.noConflict se produit après l'appel au fichier d'inclusion accordéon js. J'ai l'appel à noConflict avant l'appel à l'include, mais Joomla le met après. 2. Le fichier d'interface utilisateur jQuery personnalisé fonctionne, c'est-à-dire que la démo accordéon fonctionne lors de l'affichage du fichier exemple index.html fourni avec mon téléchargement personnalisé de l'interface utilisateur jQuery. Donc, je pense que la déclaration de classe fonctionne. – netefficacy

+0

RÉSOLU. Le chargement de la bibliothèque complète de l'interface utilisateur jQuery a fait l'affaire. Merci de m'avoir indiqué la bonne direction. – netefficacy