是否有像jQuery .is()的谷歌闭包功能

时间:2013-12-17 06:33:26

标签: jquery google-closure

我对Jquery更熟悉,但我正在使用Google Closure。我想知道在Google Closure中是否有任何函数或库,例如jQuery中的.is(),所以我可以检查目标元素是否与css选择器匹配。我找到了一个插件goog.dom.query,但这不是我需要的,因为它用于查找元素。

2 个答案:

答案 0 :(得分:0)

我自己并没有真正使用Google Closure库,但经过一番研究。我发现了一些可能与此github library(unit tests)dom.js库相关的方法。你可以使用.tagName和严格的等号。例如,如果我正在寻找DIV元素。

var parent = goog.dom.createDom(goog.dom.TagName.DIV);
parent.tagName === goog.dom.TagName.DIV

或者,如果我正在寻找li元素。

parent.tagName === goog.dom.TagName.LI

您可以在TagName上阅读有关不同(和查找)W3C Index of Elements选项的信息。

以下是extends谷歌关闭并可能复制.is()(jQuery等效.is('li'))基本功能的方法示例。

/**
 * Checks the type of an element
 * @param {Node} element
 * @param {string} type
 * @return {boolean}
 */
goog.dom.is = function(element, type) {
    switch(type){
        case goog.dom.TagName.DIV:
            return true;
            break;
        case goog.dom.TagName.P:
            return true;
            break;
        case goog.dom.TagName.LI:
            return true;
            break;
        case goog.dom.TagName.UL:
            return true;
            break;
        //Add more types...
    }
    return false;
};

虽然可以改进,this而不是element会有所帮助。 ;)

答案 1 :(得分:0)

我不相信有一个类似的功能,因为通常你没有在闭包中进行那么多的元素查询/选择。另外我无法测试这个,因为我不确定如何在像jsbin这样的东西中使用库,但似乎使用你提到的dojo工具包中的goog.dom.query插件,你可以创建自己的函数作为匹配员:

function elementMatcher (element, selector){
  var testNode = goog.dom.createElement('div');
  var cloneNode = element.cloneNode();
  testNode.appendChild(cloneNode);
  return goog.dom.query(testNode, selector).length > 0;
}

再一次无法测试这个,我无法告诉你它是否会起作用或者像jquery一样有用,但它可能会让你走上正轨。