为何$(window).is(window)返回false?预期应为true
为什么
$(window).is(window)返回false? 这是因为jQuery的.is()方法核心逻辑是匹配DOM元素/选择器/jQuery对象,而window属于浏览器全局对象,并非标准的DOM元素节点,这导致匹配逻辑失效:
- 当调用
$(window)时,jQuery会把window包装成jQuery集合,但这个集合里的对象不是DOM元素,只是全局对象的包装。 .is()方法接收参数时,如果传入的是普通对象(非DOM元素、非选择器字符串),会尝试将参数转换为jQuery对象再匹配当前集合。但window不是DOM元素,转换后的jQuery集合无法和原$(window)集合形成有效匹配。- 对比非window元素的情况:比如
$(document.body).is(document.body)会返回true,因为document.body是标准DOM元素,.is()能正确识别并匹配DOM节点身份。
简单来说,.is()是为DOM元素匹配设计的,window作为全局对象不在它的有效匹配范围内,所以返回false。
内容的提问来源于stack exchange,提问作者Omu
相关产品推荐
相关产品推荐

