Han*_*Sun 14 javascript jquery operators comparison-operators
我试过$(document) === $(document)但发现结果是false......
有没有人有这个想法?
Zud*_*dwa 19
因为在jQuery之上,每次调用($()或jQuery())都会返回新的实例:
return new jQuery.fn.init( selector, context );
Run Code Online (Sandbox Code Playgroud)
所以所有jQuery实例(即使对于相同的选择器)总是不同的(例如$("#id") === $("#id")//false)
您可以查看jQuery 2.1.0的源代码(第78行)
但是如果你把它变成变量,你就可以实现平等:
var d, d_copy;
d = $(document);
d_copy = d;
d_copy === d; //true
Run Code Online (Sandbox Code Playgroud)
Or *_*uan 18
当你使用jQuery时,你会得到一个JS对象.每次使用jQuery选择器时,此对象都完全不同.
为了更好地理解这一点,我在控制台中使用了一些数组:
a = [1, 2]
[1,2]
b = [1, 2]
[1,2]
a == b
false
a === b
false
Run Code Online (Sandbox Code Playgroud)
当使用jQuery时,它就像使用对象一样,因为你没有得到一个DOM元素作为响应(也许这就是为什么你感到困惑)
你怎么能这样做?
如果你想比较2个jQuery对象,你可以使用is() jQuery方法:
$(document).is($(document))
true
Run Code Online (Sandbox Code Playgroud)
您可以使用is()函数来检查两个对象的相等性
alert($(document).is($(document))); // return true
Run Code Online (Sandbox Code Playgroud)
每次document使用jQuery选择元素时,都会为jQuery对象提供一个新元素选择.
因此,第一次调用$(document)选择documentDOM中的元素并为您提供一个包含该选择的jQuery对象的新实例.第二个选择将您的另一个jQuery对象实例封装到同一个document元素中.虽然这些jQuery对象确实具有相同的数据成员,但它们是封装documentDOM元素的两个不同对象.