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

问题描述 投票:0回答:3

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

javascript jquery
3个回答
0
投票

$(this) == $("#idVal")返回false的原因是因为$(this)$("#idVal")是两个不同的对象实例(尽管它们正在包装相同的底层DOM元素)。

要确定两个jQuery对象的底层元素是否等效,请使用$.is()

$(this).is("#idVal") // will return true if this is id=idVal

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


0
投票

每次调用$()时,它都会创建一个新的jQuery对象。由于==测试的是对象相等,而不是内容等价,因此它们不能相等。

您可以使用jQuery .is()方法:

$(this).is("#idVal");

但你甚至不需要jQuery,只需使用:

this.id == "idVal"

0
投票

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

Follow this link for more

© www.soinside.com 2019 - 2024. All rights reserved.