https://jsfiddle.net/wgr1f0ek/
Возможно костыльно, но что же поделать, если делаешь велосипед.
Лучше конечно же использовать стандартный select и не мучаться
Но если прям так нужен кастомный селект, то даже тут есть очень много готовых решений, куда лучше чем писать самому.