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()