问题1:为什么要模拟下拉框?
1,浏览器自带的 下拉框样式不好看。
2,在ie6下,下拉框的优先级大于层,经常导致下拉框显示在层的上面。
OK,明白这个问题后,我们就开始用jQuery制作模拟下拉框。
第一步:先搭建好结构
这是普通的下拉框代码:
XML/HTML代码
复制代码 代码如下:
这个是模拟出来的:
XML/HTML代码
复制代码 代码如下:
选项一
- 选项一
- 选项二
- 选项三
- 选项四
- 选项五
- 选项六
[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").click(function(){
var value = $("#abc").val();
var txt = $("#abc_CRtext").val();
alert( "你本次选择的值和文本分别是:" + value +" , "+txt );
});
})
[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
其实到这里已经算是完成了。为了方便利用,就做成插件吧。
http://demo.jb51.net/js/JQuery_select/demo3.html
完整实例打包下载



