jQuery 对象比较

jQuery objects comparison

本文关键字:比较 对象 jQuery      更新时间:2023-09-26

根据jQuery文档,"并非所有jQuery对象都是创建的===。

"

关于这种"包装"行为的一个重要细节是,每个包装的对象都是唯一的。即使对象是使用相同的选择器创建的,或者包含对完全相同的 DOM 元素的引用,也是如此。

文档

我知道如何解决这个问题,但为什么会这样?这是 JavaScript 的某种特定行为方式吗?

是的。JS中的每个对象都是唯一的,因为除非o1o2是指向同一对象的指针,否则o1 === o2将不成立。

{ foo: 1 } === { foo: 1 }; // false

所以jQuery对象只是遵循同样的规则:

var jq1 = $('.foo');
var jq2 = $('.foo');
jq1 === jq2; // false

唯一的例外是,如果你有变量实际指向同一个jQuery对象:

var jq3 = jq1;
jq3 === jq1; // true