Jquery 在新创建的元素上查找()无效

Jquery 在新创建的元素上查找()无效,jquery,Jquery,我创建新的jQuery元素: var myJqEl = $('<div id="myDiv">Div content<span>Span content</span></div><p>P content</p>'); 你能告诉我为什么第一个和第三个返回null而第二个返回完整内容吗 谢谢。对div使用filter,而不是p: var mynewEl1 = myJqEl.filter('div').html(); var m

我创建新的jQuery元素:

var myJqEl = $('<div id="myDiv">Div content<span>Span content</span></div><p>P content</p>');
你能告诉我为什么第一个和第三个返回null而第二个返回完整内容吗


谢谢。

div
使用
filter
,而不是
p

var mynewEl1 = myJqEl.filter('div').html();
var mynewEl2 = myJqEl.find('span').html();
var mynewEl3 = myJqEl.filter('p').html();​

必须将所有HTML内容包装到另一个元素中,例如
div
one。所以这个代码:

var myJqEl = $('<div><div id="myDiv">Div content<span>Span content</span></div><p>P content</p></div>');
您有一个包含两个对象的数组:第一个是您的
div
,第二个是
p
。在google chrome Web Inspector中,您将看到如下内容:

$('<div id="myDiv">Div content<span>Span content</span></div><p>P content</p>');
[<div id=​"myDiv">​…​</div>​, <p>​P content​</p>​]
var myJqEl = $('<div><div id="myDiv">Div content<span>Span content</span></div><p>P content</p></div>');
[​…​​, ​磷含量​

​]
当您在包装的集合中使用类似于
find
的方法时,它将在第一个元素上执行,即本例中的
div
标记

这就是
mynewEl2
返回正确数据的原因。因为
span
标记存在于
div
中(包装集的第一个元素)
div
标记本身没有任何
div
标记。因此
mynewEl1
为空


当您将所有HTML数据包装到单个标记中时,包装集只包含一个元素,并且所有HTML数据都将存在于该标记中。

根级别有两个不同的元素,如果您有一个包含这两个元素的“根”,则第一行和第三行将无法检索
null

例如,尝试如下定义变量
myJqEl

$('<div id="myDiv">Div content<span>Span content</span></div><p>P content</p>');
[<div id=​"myDiv">​…​</div>​, <p>​P content​</p>​]
var myJqEl = $('<div><div id="myDiv">Div content<span>Span content</span></div><p>P content</p></div>');
var myJqEl=$('Div contentSpan contentp content

);
因为你正在搜索一个
DIV
,这是你用来搜索的jQuery对象。在这个
DIV
中没有
DIV,也没有
P
。请看这个演示:第一行日志是什么?你能发布你所有的代码吗?谢谢JSang,这就是我需要的