2010-02-28 7 views
11

J'essaie de manipuler le HTML stocké dans une variable jQuery. Je veux faire cette manipulation avant d'écrire la variable dans le document.Comment manipuler le code HTML dans une variable jQuery?

Donc, j'ai une variable définie comme:

var sighting = "<div><span class="feed_name"></span></div>"; 

Et je veux mettre « Bonjour tout le monde » dans l'élément span. Ceci est la partie que je ne peux pas travailler:

$(sighting).("span.feed_name").html(name); 

J'écris la variable de visée 'à la page:

$(#sightings).append(sighting); 

Ce qui met le code HTML dans la variable d'observation dans le <div id="sightings"></div> élément sur la page.

Toute aide serait grandement appréciée!

Merci,

Mark

+3

'$ (observation) ("span.feed_name") html (nom)' est même pas valide syntaxe. Vous voudriez '$ (sighting) .find (" span.feed_name "). Html (nom)'. – jpsimons

Répondre

4

Essayez ceci:

var sighting = "<div><span class=\"feed_name\"></span></div>", 
    $elem = $(sighting).find("span.feed_name").text("hello world").parent(); 
$("#sightings").append($elem); 

L'appel parent est nécessaire pour revenir à la div extérieure.

+0

LOL, vous l'avez eu d'abord et même avec la même rubrique "Essayez ceci:": D (ma réponse supprimé) – Tronic

+1

Salut Gumbo, Merci pour votre aide! J'ai fini par aller avec l'autre réponse, mais la tienne était utile aussi. - Mark – Mark

11

Je préfère cette méthode, vous aurez plus de contrôle sur les éléments car ils restent comme des objets, et sont donc plus faciles à forcer dans les fonctions.

sighting = document.createElement('div'); 

Ensuite, vous pouvez manipuler comme si elle faisait déjà partie du DOM

$(sighting).addClass("feed_name").html(name); 
$(sighting).appendTo("#sighting"); 

EDIT

Hmm ... il semble que je mal lu votre question. Je préférerais encore faire les éléments en utilisant la fonction createElement().

sighting = document.createElement('div'); 
sighting_contents = document.createElement('span'); 

$(sighting_contents).addClass("feed_name").html(name); 
$(sighting).append(sighting_contents); 
$(sighting).appendTo("#sightings"); 

Un peu plus bavard, mais vous pouvez enchaîner les trois derniers en une seule ligne si vous voulez ... Je pense que cela est plus facile à lire et en fin de compte vous donne plus de contrôle, parce que techniquement vous ne devriez pas écrire un tas de HTML dans votre js, vous pouvez créer les éléments et les ajouter, mais en ce qui concerne l'écriture de gros blocs de balisage, je pense que la création d'éléments comme des objets comme celui-ci vous donne plus de flexibilité.

Vous pouvez également joindre des événements aux éléments ajoutés comme celui-ci d'une manière plus simple:..

$(sighting).bind("click", function(event) { 
    $(this).fadeOut(); 
}); 
+0

Salut Joseph, Merci pour votre réponse! Cela ressemble à l'approche que je veux, mais quand j'écris: sighting1 = document.createElement ("

"); Je reçois l'erreur js: Erreur: exception non interceptée: [Exception ... "La chaîne contient un caractère non valide" code: "5" nsresult: "0x80530005 (NS_ERROR_DOM_INVALID_CHARACTER_ERR)" emplacement: « http: //www.myurl .com Ligne: 47 "] Des idées de quoi cela pourrait-il provenir? Merci, Mark – Mark

+0

Oui, c'est l'erreur attendue. Vous n'avez pas besoin du html dans la fonction juste faire: 'document.createElement ('div');' Vous ne pouvez pas mettre du code HTML dans cette fonction, juste la balise de l'élément que vous voulez créer. –

+0

Un ha, je vois. Ça a marché! Merci de votre aide. – Mark

Questions connexes