自定义下拉列表















自定义下拉列表,也就是点击一个选择框的时候,下面会弹出相对应的推荐的选项,再选择一个之后,选项的内容会填充到选择框里面。选项框随之消失。

首先我们先定义两个框,一个选择框,一个选项框,代码结构如下:

    <div id="info">
            选择一个你最喜欢的游戏
        </div>
        <ul id="chose">
            <li>王者荣耀</li>
            <li>LOL</li>
            <li>吃鸡</li>
            <li>连连看</li>
            <li>冒险岛</li>
            <li>穿越火线</li>
            <li>地下城与勇士</li>
            <li>梦幻西游</li>
        </ul>

css样式这里就不说了,大家可以自己设计。

HTML结构写好之后,接下来就是通过JS代码来实现我们所需要的功能了。首先,选项框我们需要将其隐藏,也就是设置其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元素添加一个事件监听。

    其中type是事件的类型,如click,dblclick,mouseover等,也就是事件句柄去掉前面的on。

     e = e || event;
     e.stopPropagation();

上面的两句代码是用来阻止事件冒泡的。

然后再通过事件委托(以事件冒泡的特性设计的一种方法)将选项的值赋予选择框。

注:element.target是获取最初触发事件的事件源元素,这里点击选择的时候,最初触发的事件源,很明显就是一个一个的li元素。然后将其内容赋予选择框就可以了。

最后选择结束之后,再将下面的提示框隐藏掉就可以了。