代码之家  ›  专栏  ›  技术社区  ›  denisjacquemin

元素至少有一个选择器

  •  1
  • denisjacquemin  · 技术社区  · 16 年前

    我有一组CSS选择器

    我想找出一个元素是否至少有一个css选择器

    例子:

    var selectors = ['green', 'red', 'yellow']
    
    <div id="elem1" class="red purple yellow white"></div>
    <div id="elem2" class="black white"></div>
    

    我的函数应该返回true on elem1 和错误的 elem2

    我使用原型1.7

    谢谢你的见解

    1 回复  |  直到 16 年前
        1
  •  1
  •   Cristian Sanchez    16 年前
    function matchesSomeSelectors(element, selectors) {
       return selectors.some(function (selector) {
           return Prototype.Selector.match(element, selector);
       }); 
    }
    

    http://jsfiddle.net/4p4LJ/

    我不确定是否 some 在IE或更旧的浏览器中可用,但如果需要,您可以自己轻松地复制它。

    下面是Mozilla的实现,如果您需要的话:

    if (!Array.prototype.some)
    {
      Array.prototype.some = function(fun, thisp)
      {
        var i = 0,
            len = this.length >>> 0;
    
        if (typeof fun != "function")
          throw new TypeError();
    
        var thisp = arguments[1];
        for (; i < len; i++)
        {
          if (i in this &&
              fun.call(thisp, this[i], i, this))
            return true;
        }
    
        return false;
      };
    }