2013-06-23 6 views
0

Je veux collecter tous les ID de div qui ont été cliqués, puis affecter cette valeur à var.Comment stocker des données dans jquery

Voici mon code:

$('div.kim2bb').on('click', function(){ 
    var el = el + ', ' + $(this).attr('id'); 
    alert(el); 
}); 

J'ai essayé un, mais chaque fois que je clique el il est remis à zéro, comment puis-je l'empêcher de remettre à zéro?

+0

la dernière ligne est montrant ma colère. J'ai essayé plus de 10 fois de télécharger celui-ci mais j'ai échoué sans raison raisonnable. alors ne le prenez pas au sérieux –

Répondre

5

Déplacer la déclaration initiale de el en dehors de votre événement click:

var el = ''; 
$('div.kim2bb').on('click', function(){ 
    el += ', ' + $(this).attr('id'); 
    alert(el); 
}); 

Cela provoque la variable à vivre dans un autre champ.

Et vous devez utiliser des tableaux au lieu:

var el = []; 
$('div.kim2bb').on('click', function(){ 
    el.push($(this).attr('id')); 
    alert(el.join(", ")); 
}); 
+0

Comment appelez-vous + = stuff? parce que je savais que répondre à ma question ressemblerait à quelque chose comme ça, mais je ne pouvais pas trouver un nom approprié pour le rechercher sur google –

+1

Vous appelez ceci pour concaténer ou ajouter. @adeneo: Vous avez tout à fait raison, bien sûr. Je voulais juste lui montrer à quoi ressemblerait son approche. J'ai ajouté une version de tableau de son code. –

2

Gardez-le dans un tableau. Cela rend l'utilisation plus facile plus tard. (Mon avis)

el=[]; 
$('div.kim2bb').on('click', function(){ 
    el.push($(this).attr('id')); 
    console.log(el); 
}); 
0

Une autre itération des réponses données avant est de tester si un élément a déjà été ajouté avant

var ids=[]; 

$('div.kim2bb').on('click', function(){ 
    var id = $(this).attr("id"); 

    // if id has not been added before 
    if(ids.indexOf(id) == -1) { 
     ids.push(id); 
    } 
    console.log(ids.join(",")); 
}); 
Questions connexes