javascript - 等效查询 => 相同的 JQuery 对象?

标签 javascript jquery

如果我有<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/

相关文章:

php - Laravel 和数据表 : Ajax data not refreshing table with new ajax parameters from html select

Javascript - 需要一个正则表达式来匹配美国附表 B (HTS) 编号。 "0000.00.0000"

javascript - angularJS 中的客户端重复数据验证

javascript - 尝试登录到express和node.js内置的身份验证系统时出现404错误(文件未找到)

javascript - Jquery 适用于一个按钮,但不适用于另一个相同的按钮?

iphone - jquery jScrollPane ipad问题

javascript - 通过 jquery 更改多个标签上使用的特定 ID 的 CSS

javascript - 在javascript中获取选定的单选按钮值

javascript - 使用 array.map() 计算二维数组列的平均值

javascript - 压缩类似的 IF 语句