用于类/ id选择的jQuery的轻量级替代

假设我想构建一个非依赖的javascript框架/脚本。 有没有办法利用jQuery的惊人的类和元素选择function

$('.this') or $('#this') or $('div', '.this') 

不依赖于jQuery或使用jQuery(如果可用)但如果没有,它可以在没有它的情况下工作吗? 我搜索了这个高低。 也许我正在搜索错误,因为我得到的最接近的是:

选择没有jQuery的元素

但是,这并不像我想要的那样深入或类似于我想要的jQuery。 我已经考虑过挖掘jQuery源代码并将其删除并使用它,但我希望有人已经这样做了,我只是在错误的地方寻找并且其他人知道它。

更新

这有几个方面的答案,谢谢你的快速回复。 我在用错误的方法搜索。 我终于来了: https : //github.com/ded/qwery

然而,这里的答案完美地完成了工作: jQuery用于类/ id选择的轻量级替代

除了IE6和IE7之外,您可以使用document.querySelectorAllsomeElement.querySelectorAll来执行类似的选择function。

更新更多细节:

它看起来像ZeptoJS做了以下。 这使用$$(document, '#myid')$$(document, '.myclass')$$(document, 'div')快速函数和对$$(document, 'div > .myclass')慢搜索$$(document, 'div > .myclass')

 var classSelectorRE = /^\.([\w-]+)$/, idSelectorRE = /^#([\w-]+)$/, tagSelectorRE = /^[\w-]+$/; $$ = function(element, selector){ var found; return (element === document && idSelectorRE.test(selector)) ? ( (found = element.getElementById(RegExp.$1)) ? [found] : [] ) : Array.prototype.slice.call( classSelectorRE.test(selector) ? element.getElementsByClassName(RegExp.$1) : tagSelectorRE.test(selector) ? element.getElementsByTagName(selector) : element.querySelectorAll(selector) ); } 

你可以做jQuery做的事情并使用Sizzle: http : //sizzlejs.com/

“我需要一个小型JS库……”的答案就是这个网站: http : //microjs.com/

具体来说,你正在寻找一个选择器引擎:

http://microjs.com/#css

你看过zepto.js了吗? 你仍然依赖于一个框架,但它的重量要轻得多:大约5kb而不是31kb。

只需尝试jBone ,用于事件和DOM操作的库。 jBone比jQuery / Zepto具有更好的性能,更小的尺寸和对所有选择器,事件API的完全支持。

MicroSelector 。 甚至比Zepto更小更快,后者比Sizzle小,后者比JQuery小。