11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous, Smiley smile

Le titre n'est pas clair, mais le problème est simple.

J'utilise Colorbox pour afficher des galeries d'images en plein écran, il y a plusieurs diapos sur la même page, le code HTML / JS du premier diapo est le suivant :
<p><a href="#" class="ouvrir-galerie-1">Lancer le diapo</a></p>

<ul>
     <li><a href="image-1.jpg" rel="galerie-1">Image 1</a></li>
     <li><a href="image-2.jpg" rel="galerie-1">Image 2</a></li>
</ul>

var galerie1 = $('a[rel=galerie-1]').colorbox();
$('a.ouvrir-galerie-1').click(function(e){
     e.preventDefault();
     galerie1.eq(0).click();
});
Ça fonctionne bien sur une page statique où les galeries sont ajoutées manuellement.

Je voudrais maintenant adapter ce bout de code jQuery pour qu'il fonctionne dans les cas où les galeries sont générées dynamiquement, et ainsi automatiser les appels.

J'ai plusieurs algos en tête, mais j'avoue que ça bloque au niveau de mes compétences en jQuery.

Votre aide m'est précieuse, merci beaucoup. Smiley smile

PS : Marche pas la colorisation syntaxique ? Smiley sweatdrop
Modifié par BeliG (05 Sep 2011 - 17:23)
Pour info, j'étais parti sur quelque chose comme ça :
$('a[rel*=ouvrir-galerie]').each(function(){
	var me = $(this);
	var diapo = me.colorbox();
	$('????').click(function(e){
		e.preventDefault();
		diapo.eq(0).click(); }); 
});
Je ne sais pas quoi mettre à la place des "????" pour qu'il cible le lien permettant d'ouvrir la galerie relative à la galerie courante (par exemple si on a stocké dans la variable "diapo" les images qui ont l'attribut rel="galerie-1", comment lui dire que la fonction click() doit concerner le lien "ouvrir-galerie-1".

J'ai eu ces idées :
- Utiliser un compteur et concaténer la chaine "ouvrir-galerie-" avec le compteur.
- Récupérer le nom de la galerie courante (par exemple "galerie-1") et concaténer la chaine "ouvrir-" avec le nom de la galerie.

Mais je n'arrive pas à les mettre en place. Smiley decu
Modifié par BeliG (05 Sep 2011 - 17:19)
J'ai réussi en utilisant un compteur, de cette façon :

var i = 1;
$('a[class*=ouvrir-galerie]').each(function(){
	var current = $('a[rel=galerie-'+i+']').colorbox();
	$('a.ouvrir-galerie-'+i).click(function(e){
		e.preventDefault();
		current.eq(0).click(); });
	i++;
});