Jquery 更改后的自定义选择框不';行不通
我使用的是自定义选择框脚本,但问题是当我更改值时,它什么也不做(就像在演示中一样)Jquery 更改后的自定义选择框不';行不通,jquery,select,Jquery,Select,我使用的是自定义选择框脚本,但问题是当我更改值时,它什么也不做(就像在演示中一样) //迭代每个select元素 $('select')。每个(函数(){ //缓存选项的数量 变量$this=$(this), numberOfOptions=$(this).children('option').length; //隐藏选择元素 $this.addClass('s-hidden'); //将select元素包装在div中 $this.wrap(“”); //在隐藏的select元素的顶部插入一个
//迭代每个select元素
$('select')。每个(函数(){
//缓存选项的数量
变量$this=$(this),
numberOfOptions=$(this).children('option').length;
//隐藏选择元素
$this.addClass('s-hidden');
//将select元素包装在div中
$this.wrap(“”);
//在隐藏的select元素的顶部插入一个样式化的div
$this.after(“”);
//缓存样式化的div
var$styledSelect=$this.next('div.styledSelect');
//在样式化的div中显示第一个select选项
$styledSelect.text($this.children('option').eq(0.text());
//在样式化div之后插入无序列表,并缓存该列表
var$list=$(“
”{
“类”:“选项”
}).insertAfter($styledSelect);
//为每个选择选项在无序列表中插入一个列表项
对于(var i=0;i ”{
text:$this.children('option').eq(i).text(),
rel:$this.children('option').eq(i).val()
}).附件($清单);
}
//缓存列表项
var$listItems=$list.children('li');
//单击样式化的div时显示无序列表(如果再次单击该div,也会将其隐藏)
$styledSelect.单击(函数(e){
e、 停止传播();
$('div.styledSelect.active')。每个(函数(){
$(this.removeClass('active').next('ul.options').hide();
});
$(this.toggleClass('active').next('ul.options').toggle();
});
//单击列表项时隐藏无序列表,并更新样式化div以显示所选列表项
//更新选择元素,使其具有等效选项的值
$listItems。单击(函数(e){
e、 停止传播();
$styledSelect.text($(this.text()).removeClass('active');
$this.val($(this.attr('rel'));
$list.hide();
/*警报($this.val());取消对此的注释以进行演示*/
});
//在无序列表外单击时隐藏无序列表
$(文档)。单击(函数(){
$styledSelect.removeClass('active');
$list.hide();
});
});代码>
正文{
填充:50px;
背景色:白色;
}
s-隐藏{
可见性:隐藏;
右边填充:10px;
}
.选择{
光标:指针;
显示:内联块;
位置:相对位置;
字体:普通11px/22px Arial,无衬线;
颜色:黑色;
边框:1px实心#ccc;
}
.styledSelect{
位置:绝对位置;
排名:0;
右:0;
底部:0;
左:0;
背景色:白色;
填充:0 10px;
字体大小:粗体;
}
.styledSelect:after{
内容:“;
宽度:0;
身高:0;
边框:5px实心透明;
边框颜色:黑色透明;
位置:绝对位置;
顶部:9px;
右:6px;
}
.styledSelect:active、.styledSelect.active{
背景色:#eee;
}
.选项{
显示:无;
位置:绝对位置;
最高:100%;
右:0;
左:0;
z指数:999;
利润率:0;
填充:0;
列表样式:无;
边框:1px实心#ccc;
背景色:白色;
-webkit盒阴影:0 1px2pRGBA(0,0,0,0.2);
-moz盒阴影:0 1px2pRGBA(0,0,0,0.2);
盒影:0 1px2pRGBA(0,0,0,0.2);
}
李先生{
填充:0 6px;
利润率:0;
填充:0 10px;
}
.选项李:悬停{
背景色:#39f;
颜色:白色;
}
选择一个选项…
嗯
嗯
哦
呐喊
月…
一月
二月
前进
四月
也许
六月
七月
八月
九月
十月
十一月
十二月
您只需在如下选择后更改事件:
$this.trigger('change');
工作演示:
//迭代每个select元素
$('select')。每个(函数(){
//缓存选项的数量
变量$this=$(this),
numberOfOptions=$(this).children('option').length;
//隐藏选择元素
$this.addClass('s-hidden');
//将select元素包装在div中
$this.wrap(“”);
//在隐藏的select元素的顶部插入一个样式化的div
$this.after(“”);
//缓存样式化的div
var$styledSelect=$this.next('div.styledSelect');
//在样式化的div中显示第一个select选项
$styledSelect.text($this.children('option').eq(0.text());
//在样式化div之后插入无序列表,并缓存该列表
var$list=$(“
”{
“类”:“选项”
}).insertAfter($styledSelect);
//为每个选择选项在无序列表中插入一个列表项
对于(var i=0;i ”{
text:$this.children('option').eq(i).text(),
rel:$this.children('option').eq(i).val()
}).附件($清单);
}
//缓存列表项
var$listItems=$list.children('li');
//单击样式化的div时显示无序列表(如果再次单击该div,也会将其隐藏)
$styledSelect.单击(函数(e){
e、 停止传播();
$('div.styledSelect.active')。每个(函数(){
$(this.removeClass('active').next('ul.options').hide();
});
$(this.toggleClass('active').next('ul.options').toggle();
});
//单击列表项时隐藏无序列表,并更新样式化div以显示所选列表项
//更新选择元素,使其具有等效选项的值
$listItems。单击(函数(e){
e、 停止传播();
$styledSelect.text($(this.text()).removeClass('active');
$this.val($(this.attr('rel'));
$list.hide();
$this.trigger('change');
/*警报($this.val());取消对此的注释以进行演示*/
});
//在无序列表外单击时隐藏无序列表
$(文档)。单击(函数(){
$styledSelect.removeClass('active');
$list.hide();
});
});代码>
正文{
填充:50px;
背景色:白色;
}
s-隐藏{
可见性:隐藏;
右边填充:10px;
}
.选择{
光标:指针;
显示:内联块;
位置:相对位置;
字体:普通11px/22px Arial,无衬线;
颜色:b