为什么$(“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()
检查select器,元素或jQuery对象的当前匹配元素集合,如果这些元素中至less有一个匹配给定的参数,则返回
true
。与其他过滤方法不同,
.is()
不会创build新的jQuery对象。 相反,它允许你在不修改的情况下testing一个jQuery对象的内容。 这通常在callback中很有用,如事件处理程序…