如果我有<element id="blah" class="blah" attr="blah">
(编辑:我的 DOM 中没有其他元素,只有这个)
那么这些 jQuery 对象是绝对等价的:
$("#blah")
$(".blah")
$("[attr=blah]")
是否是在创建对象时执行查询,之后使用什么查询就无关紧要了?
编辑:使用的原始查询对我以后可能对生成的 jQuery 对象执行的任何操作有影响吗?上面的 3 个结果对象是否相同?它们对我使用的实际查询有持久影响吗? (例如,当我稍后对该对象执行某些操作时)
最佳答案
每个人都可以获取该元素,但是它们以不同的方式获取元素,因为它们是不同的选择器。
id选择器#
$("#blah")
这将返回一个 jQuery 对象,其中包含 1 元素(您列出的元素)。使用 id 的好处是,它只会返回一个元素(如果存在),并且速度最快,因为 id 预计是唯一的。
类选择器.
$('.blah')
这将返回一个 jQuery 对象,其中包含元素数组(包括您所在的元素),但也包含具有此类的任何其他元素。由于没有与此选择器的组合,因此它会比直接 id 查找慢,因为它必须检查页面上的每个元素是否存在此类。
属性选择器[]
$("[attr=blah]")
与类选择器非常相似,这将返回一个元素数组。它还必须检查每个元素。
如果使用 jQuery 函数调用时只有一个匹配项,这些可能看起来相同。发生这种情况的原因是 jQuery 将查看是否有匹配的元素数组,然后在集合上内部使用 $.each
对它们应用 jQuery 函数调用。好处是,这使得元素集的响应与 jQuery 对象包装的单个元素非常相似。
这里是 jQuery 支持的选择器的完整列表:
http://api.jquery.com/category/selectors/
关于javascript - 等效查询 => 相同的 JQuery 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24019893/