$(window).is(window)
返回
false
I(和所有AIS)认为应该是正确的,至少如果您使用非窗口元素返回true。
这可能是jQuery中的错误。
.filter()
和
.not()
都调用内部功能
winnow()
:
function winnow( elements, qualifier, not ) {
if ( isFunction( qualifier ) ) {
return jQuery.grep( elements, function( elem, i ) {
return !!qualifier.call( elem, i, elem ) !== not;
} );
}
// Single element
if ( qualifier.nodeType ) {
return jQuery.grep( elements, function( elem ) {
return ( elem === qualifier ) !== not;
} );
}
// Arraylike of elements (jQuery, arguments, Array)
if ( typeof qualifier !== "string" ) {
return jQuery.grep( elements, function( elem ) {
return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
} );
}
// Filtered directly for both simple and complex selectors
return jQuery.filter( qualifier, elements, not );
}
要判断该论点是否是一个元素,它检查qualifier.nodeType
是否是真实的。但是window.nodeType
是
undefined
,因此它落入了指望参数为字符串选择器或类似数组的元素集合的代码(jQuery对象类似于数组)。
console.log($(window).is([window]))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>