Чеклисты

Я стартовал новый проект Чеклисты.

Чеклисты — незаменимый инструмент микропланирования и контроля, широко используемый как профессионалами в разнообразных областях, так и в быту.

Под капотом Django, обивка Bootsrap, рулевая jQuery.

PhpStorm и jQuery: unresolved function or method

В PhpStorm есть чудесная возможность импорта JS библиотек прямо из исходников через их «умную подсказку». Только вот при импорте jQuery актуальных версий обоих веток (1.11.1 и 2.1.1 соответственно) IDE начинает прикидываться, что не может распознать библиотеку, хотя автодополнение при этом работает. Лечится дополнительным импортом более ранней стабильной версии jQuery 1.10.2. Это можно сделать через управление JS библиотеками в настройках IDE — предварительно скачав файл себе на диск -, или временно указав путь к нужной версии на одной из CDN, например Яндекса. В самом проекте использовать устаревшую версию не обязательно, но может потребоваться перезапуск IDE.

Актуально для версии PhpStorm 7.1. В PhpStorm 8 вроде как обещают исправить.

Тонкости создания анимации в jQuery

На днях коллега попросил помочь разобраться с небольшой проблемой, с которой он столкнулся при разработке анимационного эффекта на jQuery. Честно говоря, я и сам с ней неоднократно сталкивался, но мне всегда удавалось уклониться от ее решения, используя иные средства.

А суть вот в чем: если навешивать на некое событие анимационные эффекты типа slideDown/slideUp или fadeIn/fadeOut, то отработки анимации последовательно выстраиваются в очередь и выполняются пока очередь не закончится. При этом, если событие происходит с большой частотой, так что анимация не успевает отработать, можно получить нежелательные артефакты в виде долгого дерганья и мигания для slide* и fade* функций соответственно.
Пример 1: http://jsfiddle.net/hrF9k/. Попробуйте быстро поводить мышью над серым квадратом.

Чтобы прервать исполнение очереди вызовов анимации, можно использовать функцию stop(). Но тут возникает неприятный эффект, про который я так и не понял баг это или фича. Значение CSS свойств в момент вызова stop() запоминаются и в последствии используются как максимальные.
Пример 2: http://jsfiddle.net/zGc4w/.

Раньше это ставило меня в тупик, и мне приходилось искать обходные пути реализации задачи. А секрет оказался прост: функция stop() принимает два логических параметра, отвечающих за очистку очереди и переход к предельному значению анимации соответственно.
Пример 3: http://jsfiddle.net/SRAsT/3/

Событие change элемента select в Jquery

На часах 5 утра. Только что потерял около часа на такой вот хитрушке в Jquery. Есть на странице элемент select, и написал я к нему обработчик события change. И все отлично работало, но понадобилось мне устанавливать значение select-а после загрузки страницы.
То есть что-то типа:


$(function(){
    $('#select_id').val('foo');
});

Да вот незадача — не происходит чендж после этого и все тут.
Решение простое:


$(function(){
    $('#select_id').val('foo').change();
});

Т.е. после смены значения элемента, необходимо вызвать событие change вручную.

А теперь спать.