2013-09-28 3 views
0

Salut im faire une boucle PHP où je définis une classe, cette boucle fait une liste d'éléments, et chacun d'entre eux aura un bouton "partager" qui ouvrira une fenêtre, (div display: none) le javascript ouvrir cette div, et il fonctionne parfaitement ..Incrémentation +1 de la classe en javascript

Mon problème est que dans ce moment, j'ai inséré le code <script> dans la boucle de sorte que chaque élément a son propre code <script></script> ...

Y at-il un moyen de faire un seul et sortir ce code de la boucle php, afin que je puisse améliorer le code.

<script> 
    $('a.sharebtnc').click(
      function(event) { 
       event.stopPropagation(); 
       $('div.redescompartir').fadeToggle(300); 

      } 
     ); 
    </script> 

Dans la boucle et je viens ajouter à la classe l'identifiant comme celui-ci (id: 32)

<script> 
    $('a.sharebtnc32').click(
      function(event) { 
       event.stopPropagation(); 
       $('div.redescompartir32').fadeToggle(300); 

      } 
     ); 
    </script> 

Comment puis-je faire de ce script fonctionne pour tous les éléments, peu importe le numéro d'identification, je Je n'ai aucune idée, mais je sais que c'est la bonne façon de le faire, n'est-ce pas?

Le code HTML est très simple, est la même chose pour chaque ... Je veux dire chaque élément a son propre div avec pour <a href="" > </a> éléments

<a href="#" class="sharebtnc(id)"> 
<div class="redescompartir(id)"> 
<a href="" >Twitter </a> 
<a href="" >Facebook </a> 
<a href="" >Google </a> 
<a href="" >Foursquare </a> 
</div> 
+0

A quoi ressemble le DOM? Est-ce que 'l'entrée 'est un enfant, un parent, un frère ou une soeur du' div'? La bonne façon de le faire est d'utiliser 'this' pour faire référence à l'élément cliqué, puis de passer à la cible que vous voulez basculer. – nrabinowitz

+0

la div est une div normale je vais coller mon code, mais c'est une div normale avec quatre éléments href. –

Répondre

2

Ajouter une nouvelle classe et attribut à l'élément d'entrée comme

au lieu de

<a class="sharebtnc32" /> 

utilisation

<a class="sharebtnc sharebtnc32" data-id="32"/> 

puis

jQuery(function ($) { 
    $('.sharebtnctl').click(function (event) { 
     event.stopPropagation(); 
     $('.redesopenclose' + $(this).data('id')).fadeToggle(300); 
    }); 
}) 
+0

Désolé peut-être que je n'ai pas fait la bonne question, l'attribut de classe est fait en php loop donc je reçois 80 classes par exemple, avec la classe sharebtnid ... (exemple sharebtn32 sharebtn33 etc) j'ai besoin d'un code universel pour tous enregistrer des lignes dans le javascript –

+1

@MonchoChavez encore vous pouvez avoir plusieurs classes pour un élément –

+0

je n'ai pas vu la dernière partie, va accepter dans un min –

1

Ma méthode préférée: PHP pour générer le lien entre les deux éléments, puis un petit extrait de JS pour saisir lequel un particulier a cliqué.

PHP:

$num = 100; 

for ($x = 0; $x < $numItems; $x++) { 
    echo " 
    <a href='#' class='sharebtn' target='$x'>Share</a> 

    <div class='redescompartir' id='$x'> 
    <a href=''>Twitter</a> 
    <a href=''>Facebook</a> 
    <a href=''>Google</a> 
    <a href=''>Foursquare</a> 
    </div> 
    "; 

} 

sortie HTML:

<a href="#" class="sharebtn" target='32'>Share</a> 

<div class="redescompartir" id='32'> 
<a href="" >Twitter </a> 
<a href="" >Facebook </a> 
<a href="" >Google </a> 
<a href="" >Foursquare </a> 
</div> 

JS:

$('a.sharebtn').on('click', function(e) { 
    e.stopPropagation(); 
    var target = $(e.currentTarget).attr('target'); 
    $('#'+target).fadeToggle(300); 
}); 

De cette façon, vous avez seulement besoin d'une seule étiquette <script></script>, qui les broswers de vos utilisateurs vous remercier pour . :)

+0

Merci je le ferai test j'ai déjà le PHP fonctionne bien: D, je sais php mon problème son avec java merci laissez-moi essayer –

+0

:(damn ce qui manque, http://jsfiddle.net/LSNXQ/1/ –

+0

Voyez si cela vous aide à diagnostiquer le problème: http://jsfiddle.net/LSNXQ/3/ – Bavell