jQuery对象比较

时间:2013-10-21 23:22:00

标签: javascript jquery

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

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

documentation

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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