Sujet : [Problème] Récupérer un id en jQuery

Bonjour,

Ca fait plusieurs jours que je suis sur le même problème.
Voila je suis en train de faire un livre d'or, un peu plus complet qu'à l'habituel.
En effet, à chaque message posté dans ce livre d'or, on peut y répondre, comme dans un forum.

Donc voila comment ça se passe,
J'ai un message avec une flèche au bout. Quand je clique sur une flèche un contenu s'ouvre avec dedans les réponses s'il y en a et un petit formulaire à remplir pour y mettre sa propre réponse.

Une classe contient l'image de ma flèche pour qu'elle se répète sauf que qd je clique sur une flèche, ça ouvre tous les contenus. Ce qui est logique vu qu'ils ont tous la même classe.
De ce fait j'ai essayé de jouer avec un id unique mais le problème survient quand je veux le récupérer.

var id = $('.mont_desc').attr('id');

Mon code récupère tjs le même id, c'est à dire le premier qui est en rapport avec ma classe. Du coup je ne peux pas appliquer mon jQuery à l'id voulu.

Voici mon code php/html

<?php $query1 = "SELECT * FROM livre_or WHERE lo_parent = 1";
                $result1 = mysql_query($query1);
                $i = 0;
                while ($r = mysql_fetch_array($result1)){
                    echo "<span class='livre_cont'>";
                        echo "<div class='barre_livre'>Message de <a target='_blank' href=mailto:'".$r['lo_mail']."'>".$r['lo_nom']."</a> le ".date("d/m/Y",$r['lo_date']).
                                "<div class='mont_desc' id='result".$i."'></div></div>";
                        echo "<div class='cont_livre'>".$r['lo_message']."</div>";
                        echo "<div class='plus_moins'>";
                            $query2 = "SELECT * FROM livre_or WHERE lo_child = ".$r['lo_id'];
                            $result2 = mysql_query($query2);
                            if (mysql_num_rows($result2) > 0){
                                while($res = mysql_fetch_array($result2)){
                                    echo "<div class='reponse'>Réponse de ";
                                    if ($res['lo_nom'] == "Les photos de Coralie")
                                        echo "<span style='color:red'>".$res['lo_nom']."</span> le ".date("d/m/Y",$res['lo_date']);
                                    else 
                                        echo "<a target='_blank' href=mailto:'".$res['lo_mail']."'>".$res['lo_nom']."</a> le ".date("d/m/Y",$res['lo_date']);
                                    echo "<br />".$res['lo_message']."</div>";
                                }
                            } ?>
                            <div class="form_reponse">
                                <form action="index.php?params=<?php echo $l['m_chemin']; ?>&cat_id=<?php echo $l['cat_categorie']; ?>&id=<?php echo $l['m_id']; ?>" method="POST">
                                    <input type="hidden" name="id" value="<?php echo $r['lo_id']; ?>" />
                                    <div class="form_reponse_part1">
                                        <label for="auteur">Auteur :</label>
                                        <input type="text" id="auteur" name="auteur" value="<?php if (isset($_POST['auteur'])) echo htmlentities(trim($_POST['auteur'])); ?>"/><br />

                                        <label for="email">E-mail :</label>
                                        <input type="email" id="email" name="email" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>"/><br />
                                    </div>
                                    <div class="form_reponse_part2">
                                        <label for="message">Message :</label>
                                        <textarea id="message" name="message" cols="40" rows="5" ><?php if (isset($_POST['message'])) echo htmlentities(trim($_POST['message'])); ?></textarea><br />
                                    </div>
                                    <input class="livre_reponse" type="submit" name="livre_reponse" value="Répondre">
                                    <div><?php if(!empty($msg)) echo $msg; ?></div>
                                    <br clear="both" />
                                </form>
                            </div>
                        </div>
                       <?php echo "</span><br />";
                       $i++;
                }

et voici mon code jQuery pour l'animation

<script type="text/javascript">
                        $(document).ready(function(){
                            $(".plus_moins").hide();
                            
                            $(".mont_desc").click(function(){
                                var more = $('.plus_moins');
                                var id = $('.mont_desc').attr('id');
                                if (more.is(':hidden')) {
                                    $(".mont_desc").animate({'opacity' : '0'},200, function() {
                                        $(this).css({'background-image' : 'url(images/plus.png)'})
                                            .animate({'opacity' : '1'},200);
                                    });
                                    more.show('slow');
                                }else{
                                    $(".mont_desc").animate({'opacity' : '0'},200, function() {
                                        $(this).css({'background-image' : 'url(images/moins.png)'})
                                            .animate({'opacity' : '1'},200);
                                    });
                                    more.hide('slow');
                                } 
                            });
                        });
                </script>

Merci d'avance de votre aide.
Amicalement,
Mell

2

Re : [Problème] Récupérer un id en jQuery

Bonjour,

Il faut faut spécifier dans quelle div vous afficher les "sous-messages", vous devez donc récupérer son "parent". Vous pouvez le faire comme ceci :

var parent = $(this).parents('.livre_cont');
var more = $('.plus_moins', parent);