我试图理解为什么两个jQuery对象不相等。当我将$(this)传递给console.log()
时,我得到:
w.fn.init [input#company-center.drop-menu-open]
然后,当我将$("#idVal")
传递给console.log()
时,会得到完全相同的结果:
w.fn.init [input#company-center.drop-menu-open]
但是,当我执行$(this) == $("#idVal")
时,它返回false。
是因为==
吗?为什么会给我false
?
答案 0 :(得分:0)
每次调用$()
都会创建一个新的jQuery对象。由于==
测试的是对象相等性,而不是内容相等性,因此它们不会比较相等。
您可以使用jQuery .is()
方法:
$(this).is("#idVal");
但是您甚至不需要jQuery,只需使用:
this.id == "idVal"
答案 1 :(得分:0)
$(this) == $("#idVal")
返回false
的原因是因为$(this)
和$("#idVal")
是两个不同的对象实例(尽管它们包装了相同的基础DOM元素)。 / p>
要确定两个jQuery对象的基础元素是否等效,请使用$.is()
:
$(this).is("#idVal") // will return true if this is id=idVal
答案 2 :(得分:0)
原因是内部JavaScript实际上有两种不同的测试相等性的方法。字符串和数字之类的基元通过它们的值进行比较,而数组,日期和普通对象之类的对象则通过其引用进行比较