我如何判断窗口是否在jQuery集中?

我如何判断窗口是否在jQuery集中?,jquery,window,filtering,Jquery,Window,Filtering,我希望我的jQuery插件在$(窗口)选择中被调用时表现不同。如果窗口在集合中,如何检查?到目前为止,我的努力: >>> $(window) == $(window) false >>> $(window).is(window) false >>> $(window).filter(window).length 0 (顺便说一句,这些都适用于文档。)当然,我可以随时检查此[0],但也有像$('a')。添加(窗口)这样的边缘情况不适用于这种方

我希望我的jQuery插件在
$(窗口)
选择中被调用时表现不同。如果
窗口
在集合中,如何检查?到目前为止,我的努力:

>>> $(window) == $(window)
false
>>> $(window).is(window)
false
>>> $(window).filter(window).length
0
(顺便说一句,这些都适用于
文档
。)当然,我可以随时检查
此[0]
,但也有像
$('a')。添加(窗口)
这样的边缘情况不适用于这种方法

我还可以通过以下功能进行过滤:

>>> $(window).filter(function() { return this === window; }).length
1
但是我希望使用更多的jQuery-ish或通用方法。

您可以使用并将其传递给
窗口
对象。如果
窗口
对象不是集合的一部分,它将返回
-1
,否则返回集合中基于零的索引:

>>> $(window).index(window) >= 0
true

>>> $("a").add(window).index(window) >= 0
true

>>> $("a").index(window) >= 0
false
好的,只有
$(窗口).parent()和
$(文档).parent()返回一个空数组。
也许你可以用像

var test = window
  //undefined
$(test).parent().length == 0 && !$(test).is(document)
  //true
test = document
  //#document
$(test).parent().length == 0 && !$(test).is(document)
  //false
.is($(窗口))
工作:

         $(window).is($(window))​    //true
$('a').add(window).is($(window))   //true

$(窗口)=$(窗口)
如何返回
false
?不知道。我认为这与窗户的特殊性有关。在其他情况下,jQuery库缓存选择(因此返回相同的对象),但我似乎记得,
window
的处理方式不同。@未定义它们是两个不同的包装器,这就是为什么。如果对象是对同一对象的引用,则它们是相等的。这就是代码中的位置:每次调用
$(window)
,jQuery都会生成一个类似对象的新数组。@undefined我猜它们是两个不同的jQuery实例在我的例子中,效果很好(
$([window,document])。parent()。length!=$([window,document])。length
). +1.我接受+Frédéric Hamidi的答案,因为它更接近实际问题(也就是说,它会给
$(document)
)一个假阳性。很好的解决方案。我接受+Frédéric Hamidi的答案,因为它没有创建另一个jQuery实例,但除此之外,这看起来也不错。谢谢