如何在javascript中编写jquery “is”方法

How to write the jquery "is" method in javascript

本文关键字:jquery is 方法 javascript      更新时间:2023-09-26

我想知道如何仅使用javascript编写jQuery is方法?

您不能使用任何第三方库。只有浏览器提供的 JavaScript。

仅供参考,jQuery中is的方法:

根据选择器检查当前匹配的元素集, 元素, 或 jQuery 对象,如果至少有一个元素返回 true 匹配给定的参数。

如果你需要支持较旧的浏览器,你应该使用 jQuery。这应该适用于IE9,Firefox和Chrome。

//returns true if element matches selector or if element is equal to the node passed as selector
function is( elem, selector ) {
    var div = document.createElement("div");
    var matchesSelector = div.webkitMatchesSelector || div.mozMatchesSelector || div.msMatchesSelector;
    return typeof selector == "string" ? matchesSelector.call( elem, selector ) : selector === elem;
}
//returns true if any elements in the array/nodelist "is" selector
function anyIs( elems, selector ) {
    var l = elems.length, i;
    for( i = 0; i < l; ++i ) {
        if( is( elems[i], selector ) ) {
            return true;
        }
    }
    return false;
}
is(document.createElement("div"), "div")
//true
is(document.createElement("div"), "li")
//false
anyIs(document.getElementsByTagName("div"), document.getElementsByTagName("div")[3])
//true
anyIs(document.getElementsByTagName("div"), "div")
//true
function is( elem, selector ) {
    var sel = elem.ownerDocument.querySelectorAll( selector );
    return [].some.call( sel, function( el ) {
        return elem === el;
    } );
}

如果有任何元素匹配,将返回true