Augustin Chassine a écrit :
On est sorti de SPIP là puisqu’on parle de javascript.
Doit-on continuer en privé où ici ?
SPIP a l’air bien parti pour faire un usage intensif de Jquery (via déjà de nombreux plugins). Donc, pas de soucis je pense.
Concernant votre code, si vous n’avez pas déjà trouvé la solution, bien sûr :
A mon avis, le problème se loge ici :
var res=$(this).attr(« id »).split(« ")[3];
La fonction « split » effectue une « séparation » sur une chaine de caractères, ici suivant le caractère " », et renvoie un tableau de chaines de caractères (ici les chaines de caractère séparées par « _ »).
Ici on récupère la 4e chaine de caractère du tableau.
En fait, cette portion du code dépend de votre propre convention de nommage des id des éléments html.
Par exemple si l’élément a un id de la forme « monid_XX »
la ligne var res=$(this).attr(« id »).split(« _ »)[1];
stockera XX dans res.
J’utilise les underscores (« _ ») dans les id et la fonction split par choix personnel, mais il y a d’autres façons de faire.
Je ne récupère rien du tout encore.
Voilà mon code spip simplifié
<BOUCLE_exclure_rub(RUBRIQUES){titre_mot=rubrique-masquée} >
<BOUCLE_extract(ARTICLES) {id_rubrique} {doublons}>
</BOUCLE_extract>
</BOUCLE_exclure_rub>
<BOUCLE_premiere(ARTICLES){par date}{inverse}{0,6}{doublons}{doublons une}>
[(#TITRE)]
[(#DESCRIPTIF)]
[(#AUTEUR)]
[(#DATE)]
<BOUCLE_deuxieme (ARTICLES){par date}{inverse}{0,6}{!doublons une}>
[(#TITRE)]
</BOUCLE_deuxieme>
Et je voudrais que pour la première boucle, seul le premier article trouvé s’affiche et pas les autres et qu’ensuite, lorsqu’on clique sur le titre d’un des articles de la 2e boucle (qui sont tous affichés) cela remplace l’affichage de l’article de ma 1ère boucle.
Donc première étape : on cache les articles de la première boucle
//Fonction principale : on attend que la page soit complètement chargée
$(document).ready(function()
{
//on récupère la liste de tous les éléments situés dans une zone html dont l’id commence par « section » et dont la classe est « cadre-articles-une »
var select=jQuery(); //on « cache » ces éléments $(select).hide();
Là pas de souci, tout est caché.
Deuxième étape, on fait apparaître le dernier article en date, soit le premier renvoyé par la boucle première
//on récupère le numéro « au bout » de l’id (par exemple 304)… ( (this) est un raccourci pour désigner l’élément courant )
var res=$(this).attr(« id »).split(« _ »)[1];
//on construit la chaine de caractères pour « retrouver » l’élément à animer
//res = section_304 .cadre-articles-une
res = ‹ section_ ›+res+’ .cadre-articles-une’;
//on récupère la liste de tous les éléments ayant la classe « cadre-articles-une » dans l’élément ayant l’id « section_304 »
var testj=jQuery(‹ # ›+res);
//on affiche ces éléments
$(testj).show();
});
Et c’est là que ça coince. L’élément courant est-il bien le premier article trouvé ?
Le problème peut-il venir du fait que l’id de l’article est un nombre à 3 chiffres au lieu d’un (ça m’étonnerait en fait)
(Restera ensuite la troisième étape)