Легкая альтернатива jQuery для выбора класса / идентификатора - PullRequest
12 голосов
/ 13 октября 2011

Допустим, я хочу построить независимый фреймворк / скрипт javascript. Есть ли способ использовать потрясающую функциональность выбора классов и элементов в jQuery

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

Не будучи зависимым от jQuery или использующим jQuery, если он доступен, но если нет, он работает без него? Я искал это высоко и низко. Возможно, я ищу неправильно, так как самое близкое, что я получил, это:

Выбор элементов без jQuery

Тем не менее, это не так глубоко, как я хочу или так же, как я хочу jQuery. Я думал о том, чтобы покопаться в исходном коде jQuery и потрясти этот кусок и использовать его, но я надеюсь, что кто-то уже сделал это, и я просто смотрю не в том месте, а кто-то еще знает об этом.

Обновление

На этот вопрос ответили несколькими способами, и спасибо за быстрые ответы. Я искал не в том методе. Я наконец пришел на: https://github.com/ded/qwery

Однако этот ответ здесь отлично справляется со своей задачей: Легкая альтернатива jQuery для выбора класса / идентификатора

Ответы [ 6 ]

14 голосов
/ 13 октября 2011

Вы можете сделать то, что делает jQuery, и использовать Sizzle: http://sizzlejs.com/

12 голосов
/ 13 октября 2011

Ответ "Мне нужна небольшая библиотека JS, которая ..." заключается в следующем: http://microjs.com/

, в частности, вы ищете механизм выбора:

http://microjs.com/#css

5 голосов
/ 13 октября 2011

Во всем, кроме 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)
    );
}
3 голосов
/ 13 октября 2011

Вы смотрели на zepto.js ?Вы по-прежнему зависите от фреймворка, но он намного легче: около 5 КБ вместо 31 КБ.

2 голосов
/ 22 апреля 2015

Просто попробуйте jBone , библиотека для событий и манипулирования DOM. jBone имеет гораздо лучшую производительность, чем jQuery / Zepto, меньший размер и полную поддержку всех селекторов, API событий.

1 голос
/ 23 октября 2012

MicroSelector . Даже меньше и быстрее, чем Zepto, который меньше, чем Sizzle, который меньше, чем JQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...