如果窗口在jQuery集中,我怎么知道呢?

我希望我的jQuery插件在$(window)选择上调用时表现不同。 如果window在设置中,我该如何检查? 到目前为止我的尝试:

 >>> $(window) == $(window) false >>> $(window).is(window) false >>> $(window).filter(window).length 0 

(顺便说一下,那些都适用于document 。)当然我总是可以检查this[0] ,但是有一些边缘情况,比如$('a').add(window) ,这种方法没有提供。

我也可以通过function过滤:

 >>> $(window).filter(function() { return this === window; }).length 1 

但我希望更多’jQuery-ish’或通用方法。

您可以使用index()并将其传递给window对象。 如果window对象不是集合的一部分,则返回-1 ,否则返回集合中从零开始的索引:

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

AFAIK,只有$(window).parent()$(document).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))有效:

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