2013-05-15 36 views
1

这里是我的代码:为什么jQuery选择textnodes而不是html元素?

$text = $(unescapedText) 
console.log($text) 

我在控制台中看到的对象是HTML元素和文本节点的混合物:

[#text, <div></div>] 

有谁知道为什么会这样?

我知道这不是非常具有描述性,但是这个问题发生的非常不一致。

+2

它发生,因为你通过一个html文本而不是html开头的字符串?在最近版本的jQuery中会引发错误。 –

+3

创建一个小提琴(也许在http://www.jsfiddle.net)来说明问题,这似乎不太可能 –

+0

什么是unescapedText值?没有html的字符串? $()的行为取决于其第一个参数的类型和值。 – fsw

回答

0

http://api.jquery.com/jQuery/#jQuery2

如果将一个字符串作为参数传递给$()通过,jQuery的检查 字符串是否它看起来像HTML(即,它与<标记开头... >) 。 如果不是,则字符串被解释为选择器表达式,如上面解释的 。

,并根据上文:

$text = $('blah blah blah'); 

试图选择节点 “等等”,其具有至少两个 “等等” 的祖先。 它比完全不同:

$text = $('<blah> blah </blah>'); 

,试图创建的元素。

这可能不是答案,但正如您所看到的,您需要发布unescapedText的一些示例以及它发生的HTML示例。即使它“很难预测”。我假设它至少发生过一次,如果你张贴这:) :)