0

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

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

文件

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

4

1 回答 1

4

是的。JS 中的每个对象都是唯一的,除非是指向同一个对象的指针,否则这不会是o1 === o2真的。o1o2

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

所以 jQuery 对象简单地遵循同样的规则:

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

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

var jq3 = jq1;
jq3 === jq1; // true
于 2013-10-21T23:25:07.167 回答