8
votes

Comptez les éléments HTML créés de manière dynamique avec jQuery

Je compte le nombre d'entrées sur le document actuel qui ont une valeur. Cela fonctionne bien, sauf lorsque j'ai ajouté de manière dynamique plus d'intrants. Je ne peux pas y arriver de valeurs.

Par exemple, je peux avoir p> xxx pré>

créé de manière dynamique après le bouton Cliquez sur P>

for(var i =1 ; i <25; i++)
{
  ...$('input#participant-' + i).val();
}


8 commentaires

Si vous avez l'identifiant d'élément, vous n'avez pas besoin d'ajouter une balise HTML avant. Donc $ ('# participant-' + i) est meilleur.


Les exemples que vous avez et le code devraient fonctionner simplement bien .. Veuillez ajouter plus de code. Comment vous créez les duplicats lorsque vous demandez les valeurs, etc. Un jsfiddle serait formidable ..


Où est votre code de liaison de votre événement?


Pouvez-vous montrer le code que votre pour est placé?


Comment obtenez-vous les 25? Changez-le par $ ("entrée [id ^ = 'participant -']"). Longueur


Merci beaucoup tout le monde! Après l'avoir mis dans le jsfiddle. J'ai trouvé que lorsque j'ai ajouté les nouveaux boutons, j'ai manqué un morceau de code. Les nouveaux éléments n'ont pas suivi la même convention de dénomination. Donc, lorsque j'ai essayé de le rechercher à l'aide du sélecteur, il ne l'a pas trouvé. Un petit sur look ...


Pouvez-vous nous montrer le code qui crée dynamiquement l'élément? Avez-vous une chance de vous accrocher à ce sujet ou avez-vous besoin d'utiliser des événements de mutation?


S'il vous plaît voir la question mise à jour que j'ai ajouté jsfiddle avec question de suivi


3 Réponses :


8
votes

Donnez-lui une classe commune: xxx

et obtenez-le comme: xxx

et pour répondre à la modification:

La syntaxe doit être: $ (conteneur_selector) .on (event_type, cible_selector, rappel)

jsfiddle démo xxx


6 commentaires

Serait mieux que de rechercher le DOM pour $ ('# participant-' + i) .val () plusieurs fois


OP a mentionné à propos de compter des éléments créés de manière dynamique, mais il ne montre jamais la partie qu'il lie l'événement. Alors n'aborquiez pas sur cette partie.


Accepter parce que m'a appris quelque chose à propos de l'efficacité et l'a rendu plus lisible.


S'il vous plaît voir la question mise à jour que j'ai ajouté jsfiddle avec question de suivi


Merci beaucoup! Fonctionne parfaitement maintenant!


J'ai dû utiliser console.log (valeurs.length) pour obtenir un numéro en fait, mais la solution fonctionne totalement pour mon application!



3
votes

pourrait également envisager l'utilisation du sélecteur d'attribut CSS.

http://www.w3.org/tr/css2/selector.html#attribute-Selectors xxx


1 commentaires

S'il vous plaît voir la question mise à jour que j'ai ajouté jsfiddle avec question de suivi



-2
votes

L'utilisation d'un sélecteur de classe permettra de gagner du temps ici. xxx

puis utilisez un appel de comptage simple ... xxx

espère que vous trouvez cette utile


0 commentaires