自定義下拉列表
自定義下拉列表,也就是點(diǎn)擊一個(gè)選擇框的時(shí)候,下面會(huì)彈出相對(duì)應(yīng)的推薦的選項(xiàng),再選擇一個(gè)之后,選項(xiàng)的內(nèi)容會(huì)填充到選擇框里面。選項(xiàng)框隨之消失。
首先我們先定義兩個(gè)框,一個(gè)選擇框,一個(gè)選項(xiàng)框,代碼結(jié)構(gòu)如下:
<div id="info">
選擇一個(gè)你最喜歡的游戲
</div>
<ul id="chose">
<li>王者榮耀</li>
<li>LOL</li>
<li>吃雞</li>
<li>連連看</li>
<li>冒險(xiǎn)島</li>
<li>穿越火線</li>
<li>地下城與勇士</li>
<li>夢(mèng)幻西游</li>
</ul>
css樣式這里就不說了,大家可以自己設(shè)計(jì)。
HTML結(jié)構(gòu)寫好之后,接下來就是通過JS代碼來實(shí)現(xiàn)我們所需要的功能了。首先,選項(xiàng)框我們需要將其隱藏,也就是設(shè)置其display屬性為none。
$("#info").addEventListener("click",function(e){
e = e || event;
e.stopPropagation();
$("#chose").style.display = "block";
});
$("#chose").addEventListener("click",function(e){
e = e || event;
var src = e.target || e.srcElement;
$("#info").innerHTML = src.innerHTML;
$("#info").style.color = "black";
$("#chose").style.display = "none";
});
document.onclick = function(){
$("#chose").style.display = "none";
};
注:通過element.addEventListener(type, callback[, useCapture])給特定的dom元素添加一個(gè)事件監(jiān)聽。
其中type是事件的類型,如click,dblclick,mouseover等,也就是事件句柄去掉前面的on。
e = e || event;
e.stopPropagation();
上面的兩句代碼是用來阻止事件冒泡的。
然后再通過事件委托(以事件冒泡的特性設(shè)計(jì)的一種方法)將選項(xiàng)的值賦予選擇框。
注:element.target是獲取最初觸發(fā)事件的事件源元素,這里點(diǎn)擊選擇的時(shí)候,最初觸發(fā)的事件源,很明顯就是一個(gè)一個(gè)的li元素。然后將其內(nèi)容賦予選擇框就可以了。
最后選擇結(jié)束之后,再將下面的提示框隱藏掉就可以了。
歡迎關(guān)注微信公眾號(hào):猴哥說前端