- javascript
- framework
- minijQuery
18 января 2010, 12:52 более 6-и месяцев назад
minijQuery 0.0.2a (each, onclick, onmouse*) + demo with ZeroClipboard
Всем привет :)
По нужде добавил обработчики мыши (клик, влёт, вылет) и функцию обработки селектора — в простонародье each(). Рание немного модифицировал селектор + расширил обработку параметров, что бы можно было работать с each ;)
Работает each() вот так:
Для примера прикрутил к предыдущей статье ZeroClipboard, что бы при клике Копировать содержимое ячейки ;) Там всё просто:
По нужде добавил обработчики мыши (клик, влёт, вылет) и функцию обработки селектора — в простонародье each(). Рание немного модифицировал селектор + расширил обработку параметров, что бы можно было работать с each ;)
Работает each() вот так:
u$("#chars td").each(function(){ u$(arguments[0]).onmouseover(function(){ alert(arguments[0].tagName); }); });Обращаться к передаваемому обжекту пока через arguments[0], в планах сделать через this, но там нужно сделать хитрые манипуляции + свой собственный eval() через добавление к заголовку джаваскрипта с контентом самой функции ;)
Для примера прикрутил к предыдущей статье ZeroClipboard, что бы при клике Копировать содержимое ячейки ;) Там всё просто:
- создаём объект типа ZeroClipboard.Client()
- через each() вешаем на onmouseover() обработчик
- дальше уже ZeroClipboard вешает свой флешовый click() по срабатыванию которого и происходит копи-в-буфер
15 января 2010, 17:19 более 6-и месяцев назад
minijQuery, habraAlert fix %)
О, делал УТФ8 проектик, а тут мои скриптики перестали работать + некоторые крохотные правочки.
Сделал их в юникс кодировочке, а не дос ;)
ps: новый Джиквери 1.4 шикарен, скорость фантастическая… Вот ещё материальчики
Сделал их в юникс кодировочке, а не дос ;)
ps: новый Джиквери 1.4 шикарен, скорость фантастическая… Вот ещё материальчики
8 декабря 2009, 15:44 более 7-и месяцев назад
Хохохо, miniJquery 0.0.1.3a
Как и обещал
- декрементные циклы
- лёгкая оптимизация
- добавить простейшую рекурсию, для более вложенных запросов (запросы через запятую — селектор отдельной функцией);
- добавить методы / выкинуть второй параметр ( chains );
- расширить функционал изменением стилей;
- .класс
- тэг.класс
- #конетйнер .класс
- #конетйнер тэг.класс
- #конетйнер тэг
- допустимый запрос, допустимый запрос
- всё остальное идёт боком ;)
- расширение функционала селектора tinyCSSSelector (inputs, сложные многоуровневые)
- Подключение других селекторов (yass, sizzle)
- добавить новых функций разных (самые часто используемые мной в джиквери)
- добавить простейшие обработчики событий (click, mouse)
- добавить поддержку частных(custom) функций
- сделать each
- добавить простейшую анимацию (по определённым свойствам)
- кеширование о_О
19 сентября 2009, 11:15 более 10-и месяцев назад
Javascript: minijQuery 0.0.0.1 alpha :D
Есть много проектов, где функционал Джиквери слишком излишен, и используется от сили 1% возможностей? Зачем тогда тянуть 55кб? Если тот проект вместе с графикой в два раза меньше ;)
Недолго подумав, решил начать писать нечто кастомное. Название всплыло само собой minijQuery. Сразу скажу, для работы использует $ и addLoadEvent, что бы сразу было кроссбраузерно и красиво ;)
Ограничения (поддерживает только двухуровневый запрос):
Недолго подумав, решил начать писать нечто кастомное. Название всплыло само собой minijQuery. Сразу скажу, для работы использует $ и addLoadEvent, что бы сразу было кроссбраузерно и красиво ;)
minijQuery = function(pattern, action) { // пустой патерн, уходим, возможно скоро закоментируется if (typeof pattern != "string" || pattern.length < 1) return; // объявляем дефолтный выбор var _target = document.body; // контейнер всё боди var _select = "*"; // выбераем все теги var _class = false; // класс // разбиваем на части запросик var selector = pattern.split(" "); var parts = selector.length; // дальше по сценарию switch (parts){ case 1: //если всего один, подразумеваем тег.класс var sel = selector[0].split("."); _select = sel[0]; _class = sel[1]; break; default: // если больше, значит есть ещё и #контейнер var sel = selector[0].split("#"); _target = $(sel[1]); var sel = selector[1].split("."); _select = sel[0]; _class = sel[1]; } // дальше просто перебераем в контейнере, все нужные тэги var tag_s = _target.getElementsByTagName(_select); for(var i=0; i < tag_s.length; i++) { if (tag_s[i].className == _class || !_class) { // совпал класс, или не задан выполняем действие // пока только элементарные // скоро они преврятятся в методы switch (action) { case "hide": tag_s[i].style.display = 'none'; break; case "show": tag_s[i].style.display = 'inline'; break; case "toggle": var _display = tag_s[i].style.display; tag_s[i].style.display = _display != 'none' || _display.length < 1 ? 'none' : 'inline'; break; } } } // возвращаем список выбраных элементов return tag_s; }Попробовать пример можно слева, на тэгах, посмотреть отдельно, будет ссылка ниже.
Ограничения (поддерживает только двухуровневый запрос):
- .класс
- тэг.класс
- #конетйнер .класс
- #конетйнер тэг.класс
- #конетйнер тэг
- всё остальное идёт боком ;)
- добавить простейшую рекурсию, для более вложенных запросов;
- расширить функционал изменением стилей;
- добавить методы / выкинуть второй параметр;