11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour tout le monde,

voila j'utilise depuis quelques temps jquery sur un site, je ne suis pas très bon en javascript et du coup mon code est un peu honteux... En gros actuellement lorsque j'ai une boucle (php ou autre) je recolle mon javascript à chaque passage pour récupérer le bon $id, du genre :

while($data = mysql_fetch_array($req)) 
    {
echo'<script type="text/javascript">
    $(document).ready(function() {
        $(".lien_'.$id.'").click(function()
		{
		alert("lien : '.$id.'");
		});
    });
    </script>
   <a href="" class="lien_'.$id.'">test: '.$id.'</a><br/> ;
    }


Ca marche bien mais c'est pas propre du tout, j'aimerai plutot que le code JS soit hors de ma boucle et que jquery détecte tout seul l'id du lien, par exemple :

<script type="text/javascript">
    $(document).ready(function() {
        $(".classdelelement_[$id de l'élément]").click(function()
		{
		alert("lien: [$id de l'élément]");
		});
    });
    </script>


Voila j'ai cherché sur la doc de jquery mais à part l'attribut this (auquel j'ai pas compris grand chose) j'ai rien trouvé de très clair, donc si quelqu'un peut me guider vers le bon chemin ce serait très sympa Smiley smile

Merci d'avance Smiley smile
Modifié par bru (18 Oct 2010 - 16:13)
Salut,

J'espère que j'ai bien compris ton problème. A mon avis tu fais fausse route, il y a plus simple.
C'est à dire que ta boucle PHP ne doit créer que les liens :
while($data = mysql_fetch_array($req))  
    { 
      echo '<a href="" class="lien" id="'.$id.'">test: '.$id.'</a><br/>'; 
    } 

Tu attribues un id unique à chaque lien ainsi qu'une classe commune à tout les liens.
De cette manière tu peux utiliser un seul script jQuery qui va détecter le click sur une classe "lien". Ensuite tu récupères l'attribut "id" du lien qui contient le résultat de ta requête précédente.
<script type="text/javascript"> 
    $(document).ready(function() { 
        $(".lien").click(function() 
        { 
            alert($(this).attr("id")); 
        }); 
    }); 
</script>


Fais quelques tests et reviens ici si tu as d'autres soucis. J'espère avoir pu t'aider.

A bientôt
Modifié par JuJu57 (18 Oct 2010 - 12:27)
Dernière question au passage, si je veux masquer l'élément class="lien" qui à l'id 16, qu'elle est la syntaxe exacte ?

$(".lien:#16").hide("");

semble fonctionner mais avec une petite erreur.

EDIT: j'ai trouvé tout seul .lien[id=16]

Smiley lol
Modifié par bru (18 Oct 2010 - 16:12)