jQuery:$(this)== $(“#idVal”)返回false,但两者完全相同

时间:2019-04-04 03:24:35

标签: javascript jquery

我试图理解为什么两个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

3 个答案:

答案 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

See the documentation on $.is()了解更多信息。

答案 2 :(得分:0)

原因是内部JavaScript实际上有两种不同的测试相等性的方法。字符串和数字之类的基元通过它们的值进行比较,而数组,日期和普通对象之类的对象则通过其引用进行比较

Follow this link for more