JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<div id="selectbox" class="custom-selectbox">
	<ul class="selectbox-options">
		<li class="selected" data-value="item1">아이템 하나</li>
		<li data-value="item2">아이템 둘</li>
		<li data-value="item3">아이템 셋</li>
		<li data-value="item4">아이템 오</li>
	</ul>
</div>

<div id="selectbox2" class="custom-selectbox">
	<ul class="selectbox-options">
		<li data-value="item11">선택지는 하나</li>
		<li class="selected" data-value="item12">선택지는 둘</li>
		<li data-value="item13">선택지는 셋</li>
		<li data-value="item14">선택지는 오</li>
	</ul>
</div>

JavaScript

/**
* Initialize customized selectbox
* @element to apply
**/
$.fn.setCustomizedSelectbox = function() {
	var $selectbox = $(this),
		$optionbox = $selectbox.children("ul.selectbox-options"),
		$options = $optionbox.children("li");
	var isOpened = false;

	function _onToggleOptionBox(event) {
		event.stopPropagation();

		var target = event.target;

		if($.inArray(target, $options) !== -1) {
			if(isOpened) return toggleOptionItem(target);
			isOpened = true;
		} else {
			if(!isOpened) return;
			isOpened = false;
		}

		$optionbox.toggleClass("opened");
	}

	function _onCloseOptionBox(event) {
		event.stopPropagation();

		var $this = $(this),
			$target = $(event.target);

		if(($.inArray(event.target, $options) !== -1 || $target.is($this)) && isOpened) {
			$optionbox.toggleClass("opened");
			isOpened = false;
		}
	}

	function toggleOptionItem(selected) {
		var $selectedItem = $(selected),
			value = $selectedItem.data();
			value = value && value.value || null;
		
		console.log(value);
		// 선택된 아이템의 값을 이곳에서 처리하면 됩니다.
		// form 에 적용한다면 hidden input box 를 만들어서 value 를 업데이트 하거나,
		// 페이지 이동이 필요하면 이곳에서 href relocation 을 처리하면 됩니다. :)

		if(!$selectedItem.hasClass("selected")) {
			$options.removeClass("selected");
			$selectedItem.addClass("selected");
			$selectedItem.trigger("onSorterSelected");
		}

		$selectbox.trigger("click");

		return;
	}

	$selectbox.on("click", _onToggleOptionBox);
	$optionbox.on("mouseleave", _onCloseOptionBox);
}

$(document).ready(function() {
	$("#selectbox").setCustomizedSelectbox();
	$("#selectbox2").setCustomizedSelectbox();
});