用jQuery制作模拟下拉框

第一步:先搭建好结构

这是普通的下拉框代码:

XML/HTML代码
  1. <select name="abc" id="abc">  
  2.     <option value="1">选项一</option>  
  3.     <option value="2">选项二</option>  
  4.     <option value="3">选项三</option>  
  5.     <option value="4">选项四</option>  
  6.     <option value="5">选项五</option>  
  7.     <option value="6">选项六</option>  
  8. </select>  

这个是模拟出来的:

XML/HTML代码
  1. <div class="CRselectBox">  
  2.     <input type="hidden" value=""  name="abc" id="abc"/> <!-- hidden 用来代替select的值 -->  
  3.     <input type="hidden" value=""  name="abc_CRtext" id="abc_CRtext"/> <!-- hidden 用来代替select的文本-->  
  4.     <a class="CRselectValue" href="#">选项一</a>  
  5.     <ul class="CRselectBoxOptions">  
  6.         <li class="CRselectBoxItem"><a href="#" class="selected" rel="1">选项一</a></li>  
  7.         <li class="CRselectBoxItem"><a href="#" rel="2">选项二</a></li>  
  8.         <li class="CRselectBoxItem"><a href="#" rel="3">选项三</a></li>  
  9.         <li class="CRselectBoxItem"><a href="#" rel="4">选项四</a></li>  
  10.         <li class="CRselectBoxItem"><a href="#" rel="5">选项五</a></li>  
  11.         <li class="CRselectBoxItem"><a href="#" rel="6">选项六</a></li>  
  12.     </ul>  
  13. </div>  

查看演示

第二步:构建效果

主要就是Jquery代码:

JavaScript代码
  1. $(function(){   
  2.     $(".CRselectBox").hover(function(){   
  3.         $(this).addClass("CRselectBoxHover");   
  4.     },function(){   
  5.         $(this).removeClass("CRselectBoxHover");   
  6.     });   
  7.     $(".CRselectValue").click(function(){   
  8.         $(this).blur();   
  9.         $(".CRselectBoxOptions").show();   
  10.         return false;   
  11.     });   
  12.     $(".CRselectBoxItem a").click(function(){   
  13.         $(this).blur();   
  14.         var value = $(this).attr("rel");   
  15.         var txt = $(this).text();   
  16.         $("#abc").val(value);   
  17.         $("#abc_CRtext").val(txt);   
  18.         $(".CRselectValue").text(txt);   
  19.         $(".CRselectBoxItem a").removeClass("selected");   
  20.         $(this).addClass("selected");   
  21.         $(".CRselectBoxOptions").hide();   
  22.         return false;   
  23.     });   
  24.     /*点击任何地方关闭层*/  
  25.     $(document).click(function(event){   
  26.         if( $(event.target).attr("class") != "CRselectBox" ){   
  27.             $(".CRselectBoxOptions").hide();   
  28.         }   
  29.     });   
  30.   
  31.     /*===================Test========================*/  
  32.     $("#test").click(function(){   
  33.         var value = $("#abc").val();   
  34.         var txt = $("#abc_CRtext").val();   
  35.         alert( "你本次选择的值和文本分别是:" + value +"  , "+txt );   
  36.     });   
  37. })  

查看演示

 

其实到这里已经算是完成了。为了方便利用,就做成插件吧。

 

查看完整版本演示     下载例子

posted on 2010-03-08 14:22  rainweb  阅读(5585)  评论(12编辑  收藏  举报