Jquery 为什么$(';选择器';).find与$.find(';选择器';)返回的对象不同?

Jquery 为什么$(';选择器';).find与$.find(';选择器';)返回的对象不同?,jquery,Jquery,当我执行以下语句时,为什么不能得到相同的对象? console.log($('body').find('myFormId')) 及 console.log($.find('#myFormId')) 请参见下面的我的HTML: <body> <form id="myFormId"></form> </body> 我可以看到第一条语句返回一个jQuery对象,其中第二条语句只返回一个包含DOM元素的数组 调试jQuery代码在执行第二条语句时,我

当我执行以下语句时,为什么不能得到相同的对象?
console.log($('body').find('myFormId'))

console.log($.find('#myFormId'))

请参见下面的我的HTML:

<body>
<form id="myFormId"></form>
</body>

我可以看到第一条语句返回一个jQuery对象,其中第二条语句只返回一个包含DOM元素的数组

调试jQuery代码在执行第二条语句时,我可以看到Sizzle函数中的
上下文
参数未定义,请参见下面的内容:

为什么$('selector').find与$.find('selector')返回的对象不同

同一DOM元素的jQuery对象无论如何都不是同一个对象

$('body').find('#myFormId') === $('body').find('#myFormId')       // false
但是,底层DOM对象将是相同的

$('body').find('#myFormId')[0] === $('body').find('#myFormId')[0] // true
$('body').find('#myFormId')[0] === $.find('#myFormId')[0]         // true
要测试相等性,可以使用:

演示:


注意:使用
$.find()
似乎是未记录的行为

.find()
应该在表示一组DOM元素的jQuery对象上调用,就像您在
$('body')中所做的那样

 $.find()

不在房间里。因此,您不应该期望任何特定的行为,也不应该期望我们现在观察到的(返回一个数组)将来会发生变化

我同意,它们是相同的DOM元素,但是为什么
$.find('myFormId')
没有任何可用的$('body').find('myFormId')类似于
$('body').find('myFormId').find('myFormId')).css
我搜索了API,尽管
$.find()
似乎有效,但它缺少上下文和选择器。你可能偶然发现了一些本不应该真正起作用的东西好的,我认为应该在特定上下文中使用的函数应该自我验证,或者至少向您发出警告。
 $.find()