为什么$(“body”)== $(“body”)返回false?

标题中的等式如何是错误的? 如何检查两个jQueryselect器是否指向同一个DOM对象?

您正在比较两个截然不同的 jQuery对象,因为您调用$()两次(一次方程的每一边),并且由于MooGoo解释 jQuery会在您每次调用它时创build新的包装对象。 这就是为什么比较结果返回false。

您可以通过使用get()或数组解引用来从每个jQuery对象中提取DOM对象,然后比较这些元素。 以下两者都返回true,因为两个相同的select器匹配相同的body DOM元素:

 $('body').get(0) == $('body').get(0) $('body')[0] == $('body')[0] 

如果你想testing一个jQueryselect器,使用is() 。 请注意,除非您的select器是相同的,否则您使用的select器可能不一定匹配相同的DOM元素(使用上面的元素更好)。 这也返回true:

 $('body').is('body') 

因为jQuery为每个$调用创build一个新的包装器对象,而在Javascript中,所有对象都是不同的,即使它们具有完全相同的属性/方法。

另一方面, document.body == document.body将评估为true

使用$ .is()

http://api.jquery.com/is/

检查select器,元素或jQuery对象的当前匹配元素集合,如果这些元素中至less有一个匹配给定的参数,则返回true

与其他过滤方法不同, .is()不会创build新的jQuery对象。 相反,它允许你在不修改的情况下testing一个jQuery对象的内容。 这通常在callback中很有用,如事件处理程序…