2010-06-21 7 views
8

La raison est que nous pouvons faire

$('<div>some text</div>').prependTo('#someDiv') 

donc, cela est également autorisé à faire:

$('some text').prependTo('#someDiv') 

mais nous ne pouvons pas changer some text-body? body est tout aussi bon que tout texte ...

(le code ci-dessus ajoute some text à la div id avec someDiv, donc si je veux ajouter le mot body à la div?)

mais $ ('body') devient un sélecteur pour l'élément body ... donc y at-il une règle qui dit, nous pouvons utiliser n'importe quel texte comme code HTML, tant que ce n'est pas le nom des éléments HTML?

+0

Pourriez-vous élaborer un peu plus s'il vous plaît? – Sarfraz

Répondre

8

Fondamentalement ce n'est jamais valide:

$('generic text here, *not* a selector or HTML'); 

Cela devrait toujours être un sélecteur (trouver un élément) ou html (élément création (s)), you can view the API for $() here.

Vous voulez utiliser l'un de l'autre DOM Insertion methods ici, .prepend() dans ce cas:

$('#someDiv').prepend('any text or html here is valid, <b>Hey look bold</b>.'); 
0

La gestion des nœuds de texte n'est pas la solution idéale de JQuery. Vous pouvez utiliser des méthodes DOM normales:

$('#someDiv')[0].appendChild(document.createTextNode("body")); 
0

Cela est dû au fait que jQuery considère les sélecteurs avant de créer des extraits HTML. "body" est un sélecteur valide et sera utilisé comme sélecteur.

Vous feriez mieux d'utiliser la fonction préfix à préfixer HTML ou le texte à un nœud:

$('#someDiv').prepend('some text'); 

La valeur passée à préfixer n'est pas utilisé un sélecteur et vous pouvez ajouter le texte « corps ».

1

S'il contient des balises html, il est traité comme html (sauf qu'il enlève le texte avant la première balise et après la dernière). par exemple $("<div>some text</div>"). Sinon, il est traité comme un sélecteur, par exemple $("some text").

Questions connexes