JQuery自製下拉式選單

Ref. 1 http://docs.jquery.com/Plugins/Authoring

    最近看了別人做的下拉式選單,覺得很有趣就想說用自己的邏輯跟用jQuery來
實作一下,但這個是很陽春的版本,沒有做什麼特效。至於我也參考了Ref. 1的
資料來做jQuery的plugin,至於為什麼要做plugin的原因是我想把這隻程式跟index.html
給分離開來好管理,如果對我這種作法有任何疑問跟有更好的想法希望能讓我知道然後
可以一起討論。

    如果想線上看效果可以上以下的網站去看:
http://jsfiddle.net/aDSdr/9/

那我也直接貼程式碼來跟大家分享:
============ index.html ===============

<script>
    $(document).ready(function(){
        $('#input1').selectDrop();
    });
</script>

<div id="warper1">
    <select name="" id="select1" style="display:none;">
         <option value="高雄" >高雄</option>
         <option value="台北">台北</option>
         <option value="台中" selected>台中</option>
         <option value="台南">台南</option>
         <option value="花蓮">花蓮</option>

    </select>
     <div class="inputbox1" id = "input1"></div>
     <button type="button">Submit</button>
</div>



============ css ============

#warper1{ margin:20px; position:relative; width:202px; float: left;}

#warper1 ul{list-style:none; margin: 0; padding:0;}

#warper1 ul li{line-height:20px; cursor:pointer; margin:1px 0; font-size:12px; text-indent:5px;}

.inputbox1{width:202px; height:23px; line-height:23px; background: #fff ; border:1px solid #333;  font-size:12px; text-indent:5px;}

.hover{ background:blue; color:#fff;}
.hover1{ background:red; color:#fff;}

.select_ul{background:#ddd;}

============ js ============


// 自製下拉式選單
(function($){

      $.fn.selectDrop = function(){
        
        var $input_select = $(this);
        var $ul = $(document.createElement("ul"));
        var Selects = $(this).parent('#warper1').find('select');
        var opt = $('option', Selects);      
        var opt_num = opt.length;
        var opt_list = [];
        
        // init
        $ul.addClass('select_ul');
        $ul.mouseleave(function(){
                $ul.hide();
        });    

        //
         for (var i=0; i<opt_num;i++ ){
             
            opt_list[i] = $(opt[i]).val();
            var $li = $("<li>" + opt_list[i] + "</li>");             
            $li.hover(function(){
                $(this).addClass('hover');
            },function(){
                $(this).removeClass('hover');
            });
                
            $li.click(function(){
                $("#input1").text($(this).text());
                $li.parent().hide();
            });
             
             $ul.append($li);
        };

        $("#input1").text(opt_list[0]);
          
        $input_select.after($ul);
        $ul.hide();
        
        $("#input1").click(function(){
             $ul.show();
        });
    };
})(jQuery)​





























留言

熱門文章