为什么$(window).is(窗口)返回false

问题描述 投票:0回答:1
任何人都知道为什么:

$(window).is(window)
返回
false

I(和所有AIS)认为应该是正确的,至少如果您使用非窗口元素返回true。
    

这可能是jQuery中的错误。
jquery
1个回答
0
投票

.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>
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.