2010-06-21 99 views
8

原因是,我们可以做

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

所以,这也是正常的事:

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

,但我们不能改变some textbodybody是一样的任何文本一样好......

(上面的代码添加some text到div id为someDiv,所以如果我想什么字body添加到div?)

但是$ ('body')成为body元素的选择器......所以有一条规则说,我们可以使用任何文本作为HTML代码,只要它不是HTML元素的名称?

+0

你能更详细一点吗? – Sarfraz 2010-06-21 09:50:01

回答

8

基本上这是永远不会有效的:

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

这应该总是是任一的选择器(发现的元素)或HTML(创建元件(S)),you can view the API for $() here

你想使用这里的其他DOM Insertion methods之一,.prepend()在这种情况下:

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

处理文本节点并不是JQuery的强项。你可以使用正常的DOM方法:

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

这是因为jQuery在创建HTML代码片段之前考虑了选择器。 “body”是一个有效的选择器,将用作选择器。

你会使用前置功能预先考虑HTML或文本节点的更好:

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

通过预先设置的值不使用一个选择,你可以添加文本“身体”。

1

如果它包含html标签,那么它将被视为html(除了第一个标签之前和最后一个之前)。例如$("<div>some text</div>")。否则它将被视为选择器,例如$("some text")