我怎么知道,窗口是否在jQuery集中?

时间:2012-06-13 14:26:49

标签: jquery window filtering

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

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

(顺便说一句,这些都适用于document。)当然,我总是可以检查this[0],但是有一些像$('a').add(window)这样的边缘情况不能通过这种方法来满足

我也可以通过功能过滤:

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

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

3 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

.is($(window))有效:

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