先看看效果
直接上代码
js
// 实例.getSelectValue() 获取选中值id
// 实例.getSelectText() 获取选中值text
// 实例.getSelectObj() 获取选中值Obj
// 实例.setDefault([]) 设置默认title值 传入id
// 实例.setDisabled(boolean) 设置是否可点击下拉
(function($, win, doc){
// 创建下拉列表构造函数
function Select(ele, opt){
this.$element = ele;
this.defaults = {
isChecked: false,//是否可以多选
isSearch: false,//是否可以搜索
isDelete: false,//是否可以删除
place:'bottom',//位置 默认bottom,可选top
height:'160',//选择框高度 默认160px
placeholder:'',//默认title提示
selected:[],//默认选中值
getClickSelect:function(list){},//每次点击下拉框的回调
data:[],//下拉数据
disabled:false,//是否可点击
dataField:{//下拉数据字段
text:'name',
id:'id'
}
}
this.options = $.extend({}, this.defaults, opt);
};
Select.prototype = {
constructor: Select,
bindEvent:function(){
var that = this,
defaults = this.options,
$element = this.$element;
if (defaults.disabled) {
$element.find('.wui-select-title').css('cursor','no-drop');
}else{
$element.find('.wui-select-title').css('cursor','pointer');
}
$element.find('.wui-select-title').off('click').on('click',function(){
if(defaults.disabled){
return false;
}else{
$element.find('.wui-select-title').css('cursor','pointer');
$element.find('.wui-select-content').stop().slideToggle();
}
});
$('html').click(function(e){
var tag = false;
$('.wui-select').each(function(index,item){
tag = $.contains(item,e.target);
if(!tag){
$(item).find('.wui-select-content').stop().slideUp();
}
})
})
var stopBubble = function(){//阻止冒泡
$element.find('.wui-select-content').on('click',function(e){
window.event?window.event.cancelBubble = true:e.stopPropagation();
})
};
var placeholder = function(){//placeholder
if (!$element.find('.wui-select-title').html()){
$element.find('.wui-select-title').html('<p>'+defaults.placeholder+'</p>')
}else{
$element.find('.wui-select-title>p').remove();
}
}
placeholder();//初始化先调用一下
var selectChecked = function(that){//多选title和下拉数据对应
if($(that).hasClass('active')){//选中并且title上面不存在
$element.find('.wui-select-title').append('<span _id='+$(that).attr("_id")+'>'+$(that).find('div').text()+'</span>');
}else{
var that_id = $(that).attr('_id');
var titleSpan = $element.find('.wui-select-title span');
for (var i = 0; i < titleSpan.length; i++) {
if (titleSpan.eq(i).attr('_id') == that_id) {
titleSpan.eq(i).remove();
}
}
}
};
if (defaults.isChecked) {//多选
stopBubble();
$element.find('.wui-select-item li').off('click'