我对Jquery更熟悉,但我正在使用Google Closure。我想知道在Google Closure中是否有任何函数或库,例如jQuery中的.is(),所以我可以检查目标元素是否与css选择器匹配。我找到了一个插件goog.dom.query,但这不是我需要的,因为它用于查找元素。
答案 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一样有用,但它可能会让你走上正轨。