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
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.
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, 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();
});
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 :)