Легкая альтернатива jQuery для выбора класса/идентификатора
Скажем, я хочу построить независимую структуру javascript/ script. Есть ли способ использовать jQuery удивительный класс и функции выбора элементов
$('.this') or $('#this') or $('div', '.this')
Без зависимости от jQuery или использования jQuery, если он доступен, но если нет, он работает без него? Я искал это высоко и низко. Возможно, я искал неправильно, так как ближайший я получил это:
Выбор элементов без jQuery
Однако это не так подробно, как я хочу, или так же, как я хочу, для jQuery. Я подумал о том, чтобы копать через источник jQuery и потрошить эту штуку и использовать ее, но я надеюсь, что кто-то уже это сделал, и я просто смотрю не туда, а кто-то еще знает об этом.
Обновление
Об этом ответили несколькими способами, и спасибо быстрым ответам. Я искал неправильный метод. Наконец я пришел: https://github.com/ded/qwery
Однако этот ответ здесь отлично работает:
Легкая альтернатива jQuery для выбора класса/идентификатора
Ответы
Ответ 1
Во всех, кроме IE6 и IE7, вы можете использовать document.querySelectorAll
или someElement.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)
);
}
Ответ 2
Вы можете делать то, что делает jQuery, и использовать Sizzle: http://sizzlejs.com/
Ответ 3
Ответ на "Мне нужна небольшая библиотека JS, которая..." - это этот сайт: http://microjs.com/
в частности, вы ищете механизм выбора:
http://microjs.com/#css
Ответ 4
Вы посмотрели zepto.js? Вы все равно будете зависеть от фреймворка, но он намного легче: около 5kb вместо 31kb.
Ответ 5
Просто попробуйте jBone, библиотеку для событий и манипуляций с DOM. jBone имеет гораздо лучшую производительность, чем jQuery/Zepto, меньший размер и полную поддержку для всех селекторов, API событий событий.
Ответ 6
MicroSelector. Даже меньше и быстрее, чем Zepto, который меньше, чем Sizzle, который меньше, чем JQuery.