Avatar billede webroot Nybegynder
21. oktober 2010 - 15:48 Der er 7 kommentarer og
1 løsning

Finde html elementer i string med jquery

Hej Eksperten,

jeg har en string som indeholder html og ser såden her ud :

<body><h1>header text</h1><a href="demo.dk">demo link</a></body>

nu er mit spørgsmål kan man med jquery finde de enkelte html elementer i stringen via jquery og der efter udtag deres value for f.eks <h1> tag'et og href attributen for <a> tag'et.

hvis det var elementer på side ville man jo bare lave kald som:
$('h1).each(function(){
  alert($(this).Html());

});

og

$('a').each(function(){
  alert($(this).attr('href'))
})

men hvordan gør man når det er indlejret i en string?
Avatar billede w13 Novice
21. oktober 2010 - 15:59 #1
Det kan selvfølgelig være, at der er en funktion til det, men alternativt kan du jo indsætte en HTML-tekststreng på siden vha. append()-funktionen. Når det er indsat på siden som elementer, kan du jo løbe dem igennem helt normalt og derefter slette dem igen.
Avatar billede intenz Novice
21. oktober 2010 - 16:13 #2
Ville vælge samme løsning som #1.

Det du spørger om kan godt lade sig gøre, men det ville være så meget mere komplekst, at det typisk ikke ville være værd at implementere.
Avatar billede webroot Nybegynder
21. oktober 2010 - 18:32 #3
Jeg kan godt følge jer, men der er et problem hvis jeg har tilføjer koden til siden og der efter køre en funktion som :

$('h1).each(function(){
  alert($(this).Html());

});

så vil jeg jo også få de allerede eksisterende elementer på siden hvor koden ligger med ind over, og skal der efter soter dem fra hinanden, og det er ikke en holdbar løsning. Så skal jeg kunne begrænse    :

$('h1).each(function(){
  alert($(this).Html());

});

til kun at med tage de tags som er inde i en navngivet div eller et textarea men er det muligt?
Avatar billede w13 Novice
21. oktober 2010 - 18:37 #4
Lad os sige, at du appender din streng til en div med id="test". Så kan du jo bare bruge JQuery's children-selector: http://api.jquery.com/children/

Fx.:
$('#test').children('h1').each(function(){
  alert($(this).html());
});
Avatar billede w13 Novice
21. oktober 2010 - 18:38 #5
Eller selvfølgelig bare:

$('#test h1').each(function(){
  alert($(this).html());
});


- helt uden children-selector :)
Avatar billede webroot Nybegynder
22. oktober 2010 - 07:55 #6
Ja selvfølge!! super så er det problem løst :)
Avatar billede w13 Novice
22. oktober 2010 - 20:31 #7
Tak for point! :)
Avatar billede webroot Nybegynder
14. december 2010 - 14:42 #8
Lukker :)!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester