Comment boucler le HTML stocké dans une variable pour les balises ‘ul’? C’est ce que j’ai jusqu’à présent mais l’alerte () ne se déclenche 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
Vous essayez d’utiliser la forme “sélecteur, contexte” de l’ appel $()
:
jQuery (sélecteur [, contexte])
sélecteur Une chaîne contenant une expression de sélecteur
context Un élément DOM, un document ou jQuery à utiliser comme contexte
Une chaîne de code HTML ne correspond à aucun des éléments que le context
est censé être. Par conséquent, jQuery ne sait pas quoi faire avec vos arguments et fait une mauvaise estimation.
Vous voulez probablement le faire comme ceci:
$(data).filter('ul').each(function(i,v) { //... });
Démo: http://jsfiddle.net/ambiguous/gxGB8/
Ou, si vous ne savez pas à quel niveau se trouveront les éléments
, enveloppez le code HTML dans un
et utilisez find
au lieu de filter
:
$('' + data + '').find('ul').each(function(i, v) { //... });
.val()
renvoie la valeur d’une entrée de formulaire.
Cela ne fonctionne pas sur des éléments arbitraires.
Vous voulez .text()
ou .html()
.
EDIT : Pour trouver des éléments dans une chaîne HTML, vous devez écrire $(html).find('ul')
Essayez de supprimer la scope du contexte de données de votre sélecteur ul
Essaye ç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 suppose ici que vous voulez le contenu d’un certain nombre de balises
plutôt que les parties
d’une liste unique.
Vérifiez ce violon
Cela pourrait aider!