2010-03-18 4 views
7

extrême n00b ici ... J'ai un certain nombre d'éléments (générés dynamiquement par back end donc il pourrait être un peu) et tous ont besoin d'un identifiant unique. J'essaie de trouver comment faire ça avec jQuery et ne pas le faire aussi bien. Toute aide est appréciée. Dans le code ci-dessousbesoin de générer un nombre illimité d'ID uniques avec jQuery

, je veux que chacun "bar" div pour obtenir un identifiant unique, comme ID1, ID2 etc etc

<div class="foo"> 
    <ul class="bar"> 
</ul> 
    <ul class="bar"> 
</ul> 
    <ul class="bar"> 
</ul> 
    <ul class="bar"> 
</ul> 
</div> 

Répondre

10
var id = 1; 
$('.foo .bar').each(
    function() { 
    $(this).attr('id', 'id' + id++); 
}); 

Pour lier les auditeurs d'événements à ceux-ci, vous devez le faire dans la boucle ou utiliser live.

+4

J'ai été battu au poinçon par comme 5 secondes !!! –

+0

Ca m'arrive tout le temps aussi - je dois essayer d'être plus rapide. –

+0

Vous avez manqué une parenthèse après 'this', cela devrait être' $ (this) .attr ('id', 'id' + id ++); ' – Bulan

2

Quelque chose comme ceci:

var ctr = 1; 
$.each($(".bar"), function() { 
    $(this).id = "id"+(ctr++); 
}); 

En utilisant jQuery

  • $(".bar") class selector pour saisir tous les éléments avec barre de classe,
  • $.each(selector, func) utility itérer sur les éléments de la barre et de les aborder un par un,
  • $(this) pour obtenir un élément enveloppé jQuery actif dans l'itération,
  • et "id" + (ctr ++) simplement réalise la logique d'attribuer une valeur id à attribuer, incrémenter # chaque fois
0
function makeAllTheThingsThatTheOPRequested(num){ 
    var ms = document.createElement('div'); 
    ms.setattribute("class","your_class_name"); 
    var uls=[]; 
    for(var i=0;i<num;i++){ 
     var tmp = document.createElement('ul'); 
     tmp.setattribute("class","your_class_name"); 
     ms.addChild(tmp) 
     uls.push(tmp); 
    } 
    document.body.addChild(ms); 
} 
+0

Um, l'OP veut cela dans jQuery. –

+0

désolé, n'a pas vu, honte moi :( –

+0

@Daniel Cela fonctionnera réellement "dans jQuery" ... ;-))) – deceze

Questions connexes