分析其主要功能有如下几点:
1.点击出现下拉选框
2.点击选项隐藏下拉选框 并设置相应的值
3.鼠标离开后延迟收回(或者失去焦点时收回)
就这几个功能,做了一个简单的SELECT 模拟的效果 点击查看DEMO;
为了减少与其他模块冲突的机会,使用命名空间,只为全局增加一个变量 var fakeslt;
具体代码如下,也可查看DEMO 代码:
$(
function
(){
// fake select
var fakeslt;
if ( ! fakeslt) fakeslt = {}; // 创建命名空间
fakeslt = {
show: false , // 默认显示状态
range: "" , // 搜索范围
timer: false , // 延迟收回
fsdiv:$( " #floatip " ),
fspan:$( " #fakeslt span " ),
sliup: function (){ // 收回函数 清空定时
fakeslt.fsdiv.slideUp();
fakeslt.show = false ;
},
slidw: function (){ // 展开选项
$( " #floatip " ).slideDown();
fakeslt.show = true ;
},
setrange: function (val){ // 设置搜索范围
fakeslt.range = val;
},
setvalue: function (val){ // 设置选框的值
fakeslt.fspan.html(val);
},
autoback: function (){ // 延时自动收回
if ( ! fakeslt.timer) fakeslt.timer = setTimeout(fakeslt.sliup, 1000 );
},
clearauto: function (){ // 清除计时
if (fakeslt.timer){ clearTimeout(fakeslt.timer);fakeslt.timer = false ; };
}
}
fakeslt.fspan.click( function (){
if ( ! fakeslt.show){
fakeslt.slidw();
$( " #fakeslt " )
.mouseout( function (){
fakeslt.autoback();
})
.mouseover( function (){
fakeslt.clearauto();
})
fakeslt.fsdiv.find( " a " ).click( function (e){
fakeslt.sliup();
fakeslt.clearauto();
var tmp = $(e.target).html();
fakeslt.setrange(tmp);
fakeslt.setvalue(tmp);
})
}
else {
fakeslt.sliup();
fakeslt.clearauto();
}
}
)
})
// fake select
var fakeslt;
if ( ! fakeslt) fakeslt = {}; // 创建命名空间
fakeslt = {
show: false , // 默认显示状态
range: "" , // 搜索范围
timer: false , // 延迟收回
fsdiv:$( " #floatip " ),
fspan:$( " #fakeslt span " ),
sliup: function (){ // 收回函数 清空定时
fakeslt.fsdiv.slideUp();
fakeslt.show = false ;
},
slidw: function (){ // 展开选项
$( " #floatip " ).slideDown();
fakeslt.show = true ;
},
setrange: function (val){ // 设置搜索范围
fakeslt.range = val;
},
setvalue: function (val){ // 设置选框的值
fakeslt.fspan.html(val);
},
autoback: function (){ // 延时自动收回
if ( ! fakeslt.timer) fakeslt.timer = setTimeout(fakeslt.sliup, 1000 );
},
clearauto: function (){ // 清除计时
if (fakeslt.timer){ clearTimeout(fakeslt.timer);fakeslt.timer = false ; };
}
}
fakeslt.fspan.click( function (){
if ( ! fakeslt.show){
fakeslt.slidw();
$( " #fakeslt " )
.mouseout( function (){
fakeslt.autoback();
})
.mouseover( function (){
fakeslt.clearauto();
})
fakeslt.fsdiv.find( " a " ).click( function (e){
fakeslt.sliup();
fakeslt.clearauto();
var tmp = $(e.target).html();
fakeslt.setrange(tmp);
fakeslt.setvalue(tmp);
})
}
else {
fakeslt.sliup();
fakeslt.clearauto();
}
}
)