2014-11-19 4 views
1

Я пытаюсь воссоздать селекторы jQuery и селекторов классов. Вот то, что я до сих пор:Повторное создание селекторов jQuery

function $(id) { 
    return document.getElementById(id); 
} 

Если у меня есть элемент <div id="fire">Fire</div>, то я могу позвонить за это:

$('fire').style.fontSize = '36px'; 

Это работает блестяще, однако, я хочу расширить это использовать идентификатор и имя класса с # и . соответственно. То, что я пытался не работает:

http://jsfiddle.net/6t58Lc7v/

+0

Хорошо, что о поиске на исходном коде JQuery в? – Jonathan

+1

Любые причины воссоздать? Воспроизведение универсального селектора очень сложно. Вы всегда можете пойти с sizzle (http://sizzlejs.com/), если вы не хотите jQuery. –

+0

Функция '' '' '' '' '' '' jQuery '' (https://github.com/jquery/jquery/blob/master/src/core/init.js#L16) гораздо более универсальна, чем эта. Это небольшой модуль; чтение через него, скорее всего, даст вам гораздо более глубокую оценку того, с чем он готов справиться. Поймите также, что вы могли бы построить свою реализацию поверх 'document.querySelectorAll' и принять прямой селектор. – Sampson

ответ

4

пример в скрипку не работает, потому что он ищет элемент с идентификатором «#fire» (с символом #). Вы должны пропустить этот символ:

function $(id) { 
    if (id.indexOf('#') == 0) { 
     return document.getElementById(id.substring(1)); 
    } 
} 

http://jsfiddle.net/6t58Lc7v/1/

Смежные вопросы