元素至少有一个选择器

时间:2010-09-25 21:51:42

标签: javascript prototypejs

我有一个CSS选择器数组

我想找出一个Element是否至少有一个CSS选择器

示例:

var selectors = ['green', 'red', 'yellow']

<div id="elem1" class="red purple yellow white"></div>
<div id="elem2" class="black white"></div>

我的函数应该在elem1上返回true而在elem2

上返回false

我使用prototypejs 1.7_rc2

感谢您的见解

1 个答案:

答案 0 :(得分:1)

function matchesSomeSelectors(element, selectors) {
   return selectors.some(function (selector) {
       return Prototype.Selector.match(element, selector);
   }); 
}

http://jsfiddle.net/4p4LJ/

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

如果你需要,这是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;
  };
}