2011-10-13 10 views
12

Digamos que quiero construir un marco de JavaScript/script no dependiente. ¿Hay una manera de utilizar increíble clase y el elemento de jQuery seleccionar la funcionalidadAlternativa ligera a jQuery para la selección de clase/ID

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

sin depender de jQuery o el uso de jQuery si está disponible, pero si no es así, funciona sin ella? He buscado esto alto y bajo. Tal vez Estoy buscando incorrectamente como el más cercano que he conseguido es la siguiente:

Selecting elements without jQuery

Sin embargo, eso no es tan profundo como yo quiero o lo más similar Quiero jQuery. He pensado en excavar a través de la fuente de jQuery y destruir esa pieza y usarla, pero espero que alguien ya haya hecho esto y solo estoy mirando en el lugar equivocado y alguien más lo sabe.

actualización

Esto ha sido respondida de varias maneras, y gracias a las respuestas rápidas. Estaba buscando el método equivocado. Finalmente llegué en: https://github.com/ded/qwery

Sin embargo, esta respuesta aquí hace el trabajo a la perfección: Lightweight alternative to jQuery for class/id selecting

+0

No estoy seguro de por qué no puedes usar jQuery? Hasta que una funcionalidad como esta esté integrada en los navegadores de una manera estándar (¡HAH!), No puede usar bibliotecas de utilidades como jQuery. – SoWeLie

+0

Es para un script en el que no se necesita depender de jQuery, pero puede usarlo si está disponible.No todo el mundo usa jQuery y me gustaría aprovechar esa fuente y antes de ir a mi propio código, esperaba que ya hubiera algo así. – Nijikokun

+1

Si realmente necesita hacer que la aplicación sea liviana, entonces no use un jQuery eviscerado. Vaya a buscar en la web un marco que esté diseñado solo para la navegación y la manipulación dom. Hay docenas de frameworks por ahí, estoy seguro de que hay uno que se adapta a tus necesidades. –

Respuesta

5

En todo pero IE6 e IE7, puede utilizar document.querySelectorAll o someElement.querySelectorAll para realizar una funcionalidad de selección similar.

actualización más detalles:

Parece que ZeptoJS hace lo siguiente. Esto utiliza las funciones rápidas para $$(document, '#myid'), $$(document, '.myclass'), $$(document, 'div') y búsquedas lentas para $$(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

Sin embargo, hay un problema de sintaxis, antes de 'slice.call' te falta' [] .' – Nijikokun

+0

Eso es cierto. Esto fue un corte y pega. Zepto definió 'emptyArray = [], slice = emptyArray.slice'. Actualizaré el código de arriba. –

3

¿Has mirado en zepto.js? Aún dependería de un marco, pero es mucho más liviano: alrededor de 5kb en vez de 31kb.

12

La respuesta a "necesito una pequeña biblioteca JS que ..." es en este sitio: http://microjs.com/

específicamente, usted está buscando un motor de selección:

http://microjs.com/#css

+0

Bonita colección, perfectamente organizada por microjs.com. No estoy seguro de por qué no incluyen Sizzle (más pequeño que algunos en microjs) pero sin duda un montón de opciones valiosas. –

+0

Encontré Qwery, que sé que está allí y hace el trabajo y es más pequeño que Sizzle. Gracias por la sugerencia, sin embargo @GregPettit – Nijikokun

+0

Mi placer. Asegúrese de 'aceptar' la respuesta de DA ya que fue la más útil para usted. :) –

1

MicroSelector. Incluso más pequeño y más rápido que Zepto, que es más pequeño que Sizzle, que es más pequeño que JQuery.

2

Solo intente jBone, biblioteca para eventos y manipulación de DOM. jBone tiene un rendimiento mucho mejor que jQuery/Zepto, tamaño más pequeño y soporte completo para todos los selectores, API de eventos.

Cuestiones relacionadas