Bonjour à tous.

J'ai suivit le tuto Like/dislike, très bon tuto. Pas de soucis à ce niveau là.

Ce que j'aimerai c'est de pouvoir appliquer une fonction comme celle du tuto à plusieurs même éléments dans ma page.
Imaginons 3 sujets que l'on voit sur une page et qu'on puisse directement voter à partir de celle-ci.

J'ai essayé de le faire mais ça ne s'applique toujours qu'à mon premier texte et pas aux autres.

Si vous pouviez me dire vers quoi je dois me tourner pour trouver ma réponse. :p

5 réponses


betaWeb
Réponse acceptée

Salut,

Si tu veux pouvoir appliquer le comportement like/dislike à plusieurs éléments, tu peux convertir de code du tuto en une classe JS (ou un plugin jQuery). De cette façon, tu pourras l'appeler à plusieurs endroits dans ta page.

deadC3LL
Réponse acceptée

Bonjour,

C'est normal que tu récupères toujours le première id puisque dans ta boucle while tu indique un id (alors que par nature un id doit être unique) donc dans ton js quand tu appelles $('#vote') ton script ne s'embete pas, il recupère le premier qu'il trouve et s'arrête après. Il ne faut jamais mettre d'id statique dans une boucle.

Pour en revenir à ton problème tu peux remplacer :

alert($vote.data('ref_id'));

par

alert($(this).parent().data('ref_id'));

Ainsi tu appelles l'élement parent (donc le div) du bouton sur lequel tu as cliqué.

Salut Gali,

Tu peux nous montrer ton code ?

Gali
Auteur

Salut, merci pour vos réponses.
Je met mon code simplifié ici, et modifié suite à plusieurs tentatives.
Car maintenant mon code s'éxecute bien avec tous les élément mais c'est les données qui sont transmises qui me posent soucis.
J'ai l'id de mon article qui est toujours celui du premier.
Après le rete foinctionne correctement dans la bdd donc j'ai pas tout mis, donc juste le code qui m'affiche mon id identique à chaque fois.

     while($rep = $req -> fetch()) :?>
            <p> <?php echo $rep['id_texte'] ?><br>
                    <?php echo $rep['texte'] ?><br>
                    <div id="vote" data-ref_id="<?= $rep['id_texte'];?>" data-user_id="<?php echo $id_membre ?>">
                        <button class='voter'>Voter</button>
                    </div>
            </p>
        <?php
        endwhile;
var Voter = {
    evenements: function() {
        $('button.voter').click(Voter.click);
    },
    click: function(event) {
        var $vote = $('#vote');
        event.preventDefault();

        alert($vote.data('ref_id'));
    }
};

$(document).ready(function() {
    Voter.evenements();
});
Gali
Auteur

Pfff beh oui j'ai même pas fait attention à une régle de base. Merci pour ta réponse qui m'apporte la solution à mon problème :)