很多群员问了关于下拉框美化的问题,现打一个下拉框美化的制作过程,其实是模拟出来的下拉框。
问题1:为什么要模拟下拉框?
1,浏览器自带的 下拉框样式不好看。
2,在ie6下,下拉框的优先级大于层,经常导致下拉框显示在层的上面。
OK,明白这个问题后,我们就开始用jQuery制作模拟下拉框。
第一步:先搭建好结构
这是普通的下拉框代码:
XML/HTML代码
复制代码 代码如下:
<select>
<option value="1">选项一</option>
<option value="2">选项二</option>
<option value="3">选项三</option>
<option value="4">选项四</option>
<option value="5">选项五</option>
<option value="6">选项六</option>
</select>
这个是模拟出来的:
XML/HTML代码
复制代码 代码如下:
<div>
<input type="hidden" value=""/> <!-- hidden 用来代替select的值 -->
<input type="hidden" value=""/> <!-- hidden 用来代替select的文本-->
<a href="#">选项一</a>
<ul>
<li><a href="#">选项一</a></li>
<li><a href="#">选项二</a></li>
<li><a href="#">选项三</a></li>
<li><a href="#">选项四</a></li>
<li><a href="#">选项五</a></li>
<li><a href="#">选项六</a></li>
</ul>
</div>
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
第二步:构建效果
主要就是Jquery代码:
JavaScript代码
复制代码 代码如下:
$(function(){
$(".CRselectBox").hover(function(){
$(this).addClass("CRselectBoxHover");
},function(){
$(this).removeClass("CRselectBoxHover");
});
$(".CRselectValue").click(function(){
$(this).blur();
$(".CRselectBoxOptions").show();
return false;
});
$(".CRselectBoxItem a").click(function(){
$(this).blur();
var value = $(this).attr("rel");
var txt = $(this).text();
$("#abc").val(value);
$("#abc_CRtext").val(txt);
$(".CRselectValue").text(txt);
$(".CRselectBoxItem a").removeClass("selected");
$(this).addClass("selected");
$(".CRselectBoxOptions").hide();
return false;
});
/*点击任何地方关闭层*/
$(document).click(function(event){
if( $(event.target).attr("class") != "CRselectBox" ){
$(".CRselectBoxOptions").hide();
}
});
/*===================Test========================*/
$("#test").click(function(){
var value = $("#abc").val();
var txt = $("#abc_CRtext").val();
alert( "你本次选择的值和文本分别是:" + value +" , "+txt );
});
})
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
其实到这里已经算是完成了。为了方便利用,就做成插件吧。
完整实例打包下载
您可能感兴趣的文章: