jsfiddle.net/helgastogova/u5C5v
пишу все очень примерно, чтобы изложить идею, писать надо будет больше, стили только нужные для того чтобы показать идею
теги
<div class="select__list">
<span>1</span>
<ul>
<li class="active">1</li>
<li>2</li>
<li>3</li>
</ul>
</div>
стили
.select__list{
position: relative;
ul{
top: 0px;
position: absolute;
display: none;
}
}
скрипт
//при клике на элемент показываем список — селектлист
$('.select__list').click(function(){
$(this).find('ul').show();
});
//при клике на пункт селектлиста — передаем его значение в span (его вам надо будетт передать в input hidden еще, или как у вас там работает форма
$('.select__list li').click(function(){
$(this).parent().parent().find('span').html($(this).html());
//запоминаем порядок элемента, на который мы кликнули (если первый то сдвиг 0, второй сдвиг а высоту li. третий на 2 высоты и т.д.. таким образом он должен быть всегда сдвинут к активной строке)
var top_count = $(this).index();
var li_height = $('.select__list li').height();//ну они конечно в этом случае одинаковыми должны быть
$('.select__list ul').css('top',-(top_count*li_height)+'px');
//так же можно добавить активный класс, чтобы приписать на него стрелочки
$('.select__list li').removeClass('active');
$(this).addClass('active');
//скрываем ul
$(this).find('ul').hide();
});