2011-10-13 76 views
12

比方说,我想建立一个非依赖的JavaScript框架/脚本。是否有利用jQuery的惊人类和元素选择功能轻量级替代jQuery的类/ ID选择

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

,而不依赖于jQuery的或使用jQuery,如果它是可用的,但如果没有,它的工作原理没有它的方法吗?我已经搜索了这个高低。也许我,因为我已经得到最接近的搜索不正确的是:

Selecting elements without jQuery

然而,这并不像深入,我想或类似的,因为我想jQuery的。我曾经想过通过jQuery源代码挖掘并将它拆分出来并使用它,但是我希望有人已经这样做了,而我只是在错误的地方寻找并且别人知道它。

更新

这已在几个方面回答,并感谢您的快速回复。我正在用错误的方法搜索。我终于来到:https://github.com/ded/qwery

不过这里这个答案做这项工作完美: Lightweight alternative to jQuery for class/id selecting

+0

我不知道为什么你不能只使用jQuery?直到像这样的功能以标准方式(HAH!)嵌入到浏览器中,您就会被困在使用像jQuery这样的工具库中。 – SoWeLie

+0

这是一个脚本,你不需要依赖jQuery,但可以使用它(如果可用)。并不是每个人都使用jQuery,我想挖掘这个源代码,在我开始编写代码之前,我希望已经有了这样的东西。 – Nijikokun

+1

如果你确实需要使应用程序轻量级,那么不要使用内置的jQuery。在网上搜索一个专为dom导航和操作而设计的框架。这里有几十个框架,我确信有一个框架可以很好地满足你的需求。 –

回答

5

在一切,但IE6和IE7,你可以使用document.querySelectorAllsomeElement.querySelectorAll执行类似的选择功能。

更新更多细节:

它看起来像ZeptoJS执行以下步骤。这用来$$(document, '#myid')$$(document, '.myclass')$$(document, 'div')快捷功能和慢速搜索$$(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) 
    ); 
} 
+0

然而,在'slice.call'之前有一个语法问题,你缺少'[] .' – Nijikokun

+0

这是真的。这是一个剪切和粘贴。 Zepto定义了'emptyArray = [],slice = emptyArray.slice'。我会更新上面的代码。 –

3

你看着zepto.js?你仍然依赖于一个框架,但它重量更轻:大约5kb而不是31kb。

12

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

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

http://microjs.com/#css

+0

好收集,整齐地由microjs.com组织。不知道他们为什么不包括Sizzle(比microjs小一些),但肯定有一些有价值的选择! –

+0

我发现Qwery,我知道它在那里,它做的工作,比Sizzle小。感谢您的建议@GregPettit – Nijikokun

+0

我的荣幸。一定要'接受'DA的答案,因为这对你最有帮助。 :) –

1

MicroSelector。甚至比Zepto更小更快,它比小于JQuery的Sizzle小。

2

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