在jQuery中,$('body')可以选择body元素,但$('body')可以就像$('some text'),那么如何区分呢?

时间:2010-06-21 09:47:50

标签: jquery jquery-selectors

原因是我们可以做到

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

所以,这样做也可以:

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

但我们无法将some text更改为bodybody和任何文字一样好......

(上面的代码将some text添加到ID为someDiv的div中,那么如果我想将单词body添加到div中会怎样?)

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

4 个答案:

答案 0 :(得分:8)

基本上这永远不会有效:

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

总是要么是选择器(找到元素)要么是html(创建元素),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>.');

答案 1 :(得分:1)

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

答案 2 :(得分:0)

处理文本节点不是JQuery的强项。您可以使用普通的DOM方法:

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

答案 3 :(得分:0)

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

您最好使用prepend函数将HTML或文本添加到节点:

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

传递给prepend的值不使用选择器,你可以添加文本“body”。