3 votes

Boucle sur les éléments d'une variable

Comment faire une boucle dans le HTML stocké dans une variable pour les balises 'ul' ? C'est ce que j'ai fait jusqu'à présent mais les alertes() ne se déclenchent même pas, je suis un peu perdu...

var data = 'HTML';
$('ul', data).each(function(i,v) {
    var theTag = v.tagName;
    var theElement = $(v);
    var theValue = theElement.html();
    alert(theTag+'\n'+theElement+'\n'+theValue);
});

Merci

6voto

mu is too short Points 205090

Vous essayez d'utiliser la forme "selector, context" de l'option $() appelez :

jQuery( sélecteur [, contexte] )
sélecteur Une chaîne de caractères contenant une expression de sélection
contexte Un élément DOM, un document, ou un jQuery à utiliser comme contexte

Une chaîne de caractères HTML ne correspond à aucune des choses qui context est censé être pour que jQuery ne sache pas quoi faire avec vos arguments et fasse une mauvaise supposition.

Vous voulez probablement le faire comme ça :

$(data).filter('ul').each(function(i,v) {
    //...
});

Démonstration : http://jsfiddle.net/ambiguous/gxGB8/

Ou, si vous ne Je ne sais pas à quel niveau le <ul> sera, enveloppez le HTML dans une balise <div> et utiliser find au lieu de filter :

$('<div>' + data + '</div>').find('ul').each(function(i, v) {
    //...
});

Démonstration : http://jsfiddle.net/ambiguous/tM4ua/

2voto

SLaks Points 391154

.val() renvoie la valeur d'une entrée de formulaire.
Il ne fonctionne pas sur des éléments arbitraires.

Vous voulez .text() ou .html() .

EDITAR : Pour trouver des éléments dans une chaîne HTML, vous devez écrire $(html).find('ul')

0voto

Keith.Abramo Points 5155

Essayez de supprimer la portée du contexte de données de votre sélecteur ul.

0voto

halfer Points 8455

Essayez ça :

$('ul').each(function() {
    // Gets underlying element object
    var theElement = $(this).get(0);

    var theTag = theElement.tagName;

    // Can also use .text() if you want just the textual content
    var theValue = $(this).html();

    // theElement can't be printed, it's an object
    alert(theTag+'\n'+theValue);
});

Je présume ici que vous voulez le contenu d'un certain nombre de <ul> plutôt que les balises <li> parties d'une seule liste.

0voto

Vérifiez ceci violon

Cela pourrait aider !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X