11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
je suis confronté à un comportement assez étrange du composant accordion de Jquery UI 1.8.xx. Ce dernier ne réagit pas correctement lorsque la classe ui-state-active est testée pour un affichage conditionnel.
Par exemple :


if($('.my_accordion').parent('h3').hasClass('ui-state-active')) 
      $('h3.ui-state-active').css('background','red');


affiche un fond rouge uniquement sur le premier h3 sans distinction de state, alors que la classe 'ui-state-active' devrait permettre de cibler les éléments actifs.

Une petite idée pour remédier à ce problème ?
Oui tu as raison Patidou, mon exemple peut prêter à confusion, le backgroud peut être ajouté simplement en CSS. Mais ce n'est pas la finalité de l'exercice, le but est plutôt de faire ceci :


if($('.my_accordion').parent('h3').hasClass('ui-state-active'))
// OPEN
else 
//CLOSE
Modérateur
Ce code doit marcher, mais il faudrait voir le contexte, autrement dit le code html lié pour être sûr que cela soit bien fait. Le truc qui me semble louche, c'est d'aller chercher un h3 parent de .my_accordion. Mais je ne sais pas où cette classe est appliquée…

Sinon //OPEN/CLOSE Jquery UI le fait tout seul non? C'est justement l'intérêt…
L'ouverture / fermeture se fait bien toute seule mais je cherche à passer des actions suivant l'état des blocs ouverts/fermés.

Le contexte ne change pas grand chose, le code suivant ne produit pas plus d'action au changement dynamique de la class ui-state-active / ui-state-default


if($('#ACCORDION').find('h3').hasClass('ui-state-active'))
// FAIRE QQ chose si état actif
else 
/ FAIRE QQ chose si état non actif
J'ai un problème similaire avec l'accordion de Jquery mais plus sournois puisqu'il apparaît seulement sur Chrome. Une fois que le div est fermé par l'ouverture d'un autre, celui-ci ne s'ouvre plus si l'on reclique dessus. J'ai regardé du côté des CallBack de Jquery mais dans ce cas, le problème devrait apparaître sur Firefox ou Opera, or il n'en est rien.
Je vous laisse un lien vers la page en question

<a href="http://artemg.com/v2/">La page du problème</a>

ainsi qu'un autre avec la démo d'origine

<a href="http://artemg.com/v2/demo">La démo d'origine</a>

J'ai ressassé l'ouverture et la fermeture de mes balises HTML, désactivé d'autres scripts en cas de conflit, et réimporté jquery-ui.min.js mais rien n'y fait: je sèche complètement si vous avez des conseils, je suis preneur.
Modérateur
verwa a écrit :
Le contexte ne change pas grand chose, le code suivant ne produit pas plus d'action au changement dynamique de la class ui-state-active / ui-state-default


if($('#ACCORDION').find('h3').hasClass('ui-state-active'))
// FAIRE QQ chose si état actif
else 
/ FAIRE QQ chose si état non actif

Probablement le contexte, mais bon si tu veux pas d'aide…