根据jQuery文档,“并非所有jQuery对象都被创建===。”
“关于这种”包装“行为的一个重要细节是每个包装对象都是唯一的。即使对象是使用相同的选择器创建的,或者包含对完全相同的DOM元素的引用,也是如此。”
我知道如何解决这个问题,但为什么会这样呢?这是JavaScript表现的某种特定方式吗?
答案 0 :(得分:4)
是。 JS中的每个对象都是唯一的,因为除非o1 === o2
和o1
是指向同一对象的指针,否则o2
将不会成立。
{ foo: 1 } === { foo: 1 }; // false
所以jQuery对象只是遵循同样的规则:
var jq1 = $('.foo');
var jq2 = $('.foo');
jq1 === jq2; // false
唯一的例外是如果你有变量实际上指向同一个jQuery对象:
var jq3 = jq1;
jq3 === jq1; // true