【发布时间】:2012-06-16 12:53:25
【问题描述】:
我希望我的 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”或通用方法。
【问题讨论】:
-
$(window) == $(window)怎么可能返回false? -
不知道。我认为这与窗口的特殊性有关。在其他情况下,jQuery lib 缓存选择(因此返回相同的对象),但我似乎记得,
window的处理方式不同。 -
@undefined 它们是 2 个不同的包装器,这就是原因。对象是相等的,如果它们是对 same 对象的引用。
-
就是代码中的那个地方:github.com/jquery/jquery/blob/master/src/core.js#L185jQuery每次生成一个新的类数组对象,
$(window)被调用。 -
@undefined 我猜他们是两个不同的 jQuery 实例