- PVSM.RU - https://www.pvsm.ru -
На Хабре уже проскальзывали обзоры плагинов для стилизации селекта (раз [1] и два [2])
Возможно буду заброшен помидорами за изобретение очередного велосипеда, но все текущие реализации меня не устраивали. Да, отличный плагин chosen [3], но в нем чрезмерное количество ненужного мне функционала. ikSelect [2], да, почти то что надо, но мне не понравилась генерируемая разметка.
Итак, задача — сделать плагин с блэкджеком и ш… для стилизации селекта, который по максимуму повторяет поведение стандартного. А это навигация с клавиатуры, автоподгонка ширины дропдауна, поддержка optgroup, автокоплит и самое главное полная кастомизация, включая скроллбар*.
* Для поддержки кастомного скролла нужен плагин jScrollPane [5]
Спустя несколько дней, получился вполне работоспособный плагин, гордо названный jQueryCoreUISelect
Есть API, совсем небольшой состоящий из 5 коллбеков:
$('.b-core-ui-select__select').сoreUISelect({
onInit : addCoreUISelectListener,
onOpen : addCoreUISelectListener,
onClose : addCoreUISelectListener,
onChange : addCoreUISelectListener,
onDestroy : addCoreUISelectListener
});
function addCoreUISelectListener(select, event){
console.log(el, event);
}
И пара внешних методов (для полноценной жизни вполне хватает):
$('.b-core-ui-select__select').сoreUISelect('update');
$('.b-core-ui-select__select').сoreUISelect('destroy');
Под iPhone, iPad, Android включается адаптация, т.е. внешний вид выпадающего dropdown уже зависит от системы. В Opera Mini плагин выключается полностью.
Под iPad
Под iPhone
Демо и исходники см. ниже, форкаем, ругаем, предлагаем.
Спасибо за внимание!
Ссылка на демо [4]
Ссылка на GitHub [6]
Автор: shaggysmile
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/11939
Ссылки в тексте:
[1] раз: http://habrahabr.ru/company/aiken/blog/114927/
[2] два: http://habrahabr.ru/post/139388/
[3] chosen: http://harvesthq.github.com/chosen/
[4] Image: http://shaggysmile.github.com/jQueryCoreUISelect/
[5] jScrollPane: http://jscrollpane.kelvinluck.com/
[6] GitHub: https://github.com/shaggysmile/jQueryCoreUISelect/
Нажмите здесь для печати.