2012-04-09 2 views
0

J'ai plusieurs divs, et je dois écrire un code comme ceci pour chaque div, et php change l'id en passant par $ NBR ++; à la fin. Existe-t-il un moyen plus rapide d'écrire ceci une fois plutôt que d'avoir ceci d'unique pour chaque div?manière efficace d'écrire plusieurs fonctions jquery

// when $NBR = 1 
    <div class="playbutton<?php echo $NBR?>"> 
     <script> 
      $(".playbutton<?php echo $NBR?>").click(function() 
       { $(".playbutton<?php echo $NBR?>").hide(); 
       $('#songpicture').attr("src", "<?php echo $thumb[$NBR]?>"); 
       }); 
     </script> 
    </div> 


    // when $NBR = 2 
    <div class="playbutton<?php echo $NBR?>"> 
     <script> 
      $(".playbutton<?php echo $NBR?>").click(function() 
       { $(".playbutton<?php echo $NBR?>").hide(); 
       $('#songpicture').attr("src", "<?php echo $thumb[$NBR]?>"); 
       }); 
     </script> 
    </div> 

Cela continue 15 fois ... etc ..... Toutes les variables php sont définies au début de chaque div avec PHP.

Y a-t-il un moyen de «compresser» ceci en un seul code qui pourrait être écrit une fois? Ou doit-il être écrit après chaque div?

Merci pour votre aide!

+0

Si vous avez besoin d'expliquer/clarifier s'il vous plaît laissez-moi savoir .... Ces codes jquery prennent trop de place:/ –

+2

Pourquoi ne pouvez-vous pas utiliser une simple boucle 'for'? – Brad

+0

Je vais devoir en apprendre davantage sur la boucle .each() pour jquery, je ne l'ai jamais utilisée. Merci, je vais essayer! –

Répondre

5

Ajouter ce dans le haut et enlevez tout autre scénario,

<script> 
    $(function() { 
    $(".playback_divs").click(function() { 
     $(this).hide(); 
     $('#songpicture').attr("src", $(this).data('thumb-nbr')); 
    }); 
    } 
</script> 

Et changer votre code html comme,

<div class="playback_divs playbutton<?php echo $NBR?>" data-thumb-nbr="<?php echo $thumb[$NBR]?>"> 

Notez le html change

1) nouvelle classe playback_divs ajoutée à le div.

2) l'attr de données data-thumb-nbr.

+0

De retour chez vous SKS - presque le même marquage vient de créer – mikevoermans

+0

Merci pour votre aide ... Dans mon code il y a beaucoup plus de choses que jquery fait une fois le div est cliqué, je viens de mettre deux par exemple. Je vais essayer cela merci! –

+0

Alors, est-ce que je peux juste ajouter de nouveaux 'attributs' (je ne sais pas comment les appeler) comme data-thumb-nbr à divs, et ensuite jquery les référence? –

Questions connexes