IE自带的select控件实在不好看..
这里改造了Ethan Miller的一个基于jQuery 的 Simple Multi-Select, 让其能重新构建, 这样便可以在不断变化的多选select中使用了.
目前这里有个小问题,列表在IE6下会出现click错误.考虑了一下,还是使用change来代替click事件.还未能查到是否为jQuery在IE6下兼容问题.
/* jQuery Simple Multi-Select plugin 0.9
*
* Copyright (c) 2009 Ethan Miller
* http://ethanmiller.name/notes/jquery_simplemultiselect/
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
(function($){
$.fn.extend({
simpleMultiSelect : function(options){
settings = $.extend({
highlight : '#CCE',
border : '#777',
width : 350,
height : 150}, options);
var select = this;
return this.each(function(){
// wrapping select in a div so that the select and pseudo select
// will be siblings
$(this).wrap('<div class="sms-container"></div>');
var divselect = $('<div class="sms-pseudo-select"></div>');
$('option', this).each(function(){
var op = $(this);
var dv = $('<div/>').data('v', op.val()).text(op.text());
dv.css({"cursor" : "pointer", "border-bottom" : "1px solid #ABB3DE"});
if(op.attr('selected')){
// highlight pseudo option on load
dv.css({'background-color' : settings.highlight, "font-weight" : "bold"});
}
dv.click(function(){
// we still have references to op and dv here ...
if(op.attr('selected')){
//de-select
op.removeAttr('selected');
dv.css({'background-color' : 'transparent', "font-weight" : "normal"});
}else{
//select
op.attr('selected', true);
dv.css({'background-color' : settings.highlight, "font-weight" : "bold"});
}
select.click(); //IE6在这里会出现问题
});
divselect.append(dv);
});
divselect.css({
width : settings.width,
height : settings.height,
cursor : "default",
overflow : "auto",
border : "1px solid " + settings.border});
$(this).after(divselect).hide();
});
// return this;
},
//如果实体Select发生变化,需要rebuilt一下
rebuilt : function(){
var select = this;
return this.each(function(){
// wrapping select in a div so that the select and pseudo select
// will be siblings
select.parent().find(".sms-pseudo-select").remove();
var divselect = $('<div class=\"sms-pseudo-select\"></div>');
$('option', this).each(function(){
var op = $(this);
var dv = $('<div/>').data('v', op.val()).text(op.text());
dv.css({"cursor" : "pointer", "border-bottom" : "1px solid #ABB3DE"});
if(op.attr('selected')){
// highlight pseudo option on load
dv.css({'background-color' : settings.highlight , "font-weight" : "bold"});
}
dv.click(function(){
// we still have references to op and dv here ...
if(op.attr('selected')){
//de-select
op.removeAttr('selected');
dv.css({'background-color' : 'transparent', "font-weight" : "normal"});
}else{
//select
op.attr('selected', true);
dv.css({'background-color' : settings.highlight, "font-weight" : "bold"});
}
select.change();
});
divselect.append(dv);
});
divselect.css({
width : settings.width,
height : settings.height,
cursor : "default",
overflow : "auto",
border : "1px solid " + settings.border});
$(this).after(divselect).hide();
});
// return this;
},
smsNone : function(){
return this.each(function(){
siblingDivSet(this).each(function(){
var psop = $(this);
if(psop.css('background-color') != 'transparent'){
psop.click();
}
});
});
},
smsAll : function(){
return this.each(function(){
siblingDivSet(this).each(function(){
var psop = $(this);
if(psop.css('background-color') == 'transparent'){
psop.click();
}
});
});
}
});
function siblingDivSet(sel){
// expects a select object, return jquery set
return $(sel).siblings('div.sms-pseudo-select').children('div');
}
})(jQuery);
使用时加载, 页面运行时需要重建select的话也是如下:
$("#yearSelector").simpleMultiSelect({
highlight : '#BFDAEB',
border : '#7f9db9',
width : 125,
height : 80
});
//重建
$("#yearSelector").rebuilt();
//全选
$("#yearSelector").smsAll();
//反选
$("#yearSelector").smsNone();
效果图如下:
- 大小: 18.7 KB
分享到:
相关推荐
这可能是另一个版本或变体的jQuery多选插件,可能包含2017年的更新和改进。这个插件可能提供新的特性,如优化的性能、更好的浏览器兼容性或新增的API方法。 6. **Demo**: 提供的"demo"示例文件是了解和测试插件...
jQuery MultiSelect 是一个基于jQuery的插件,它的主要目标是通过提供自定义样式和增强功能,来改进原生的多选下拉框用户体验。这个插件不仅提供了美观的界面,还允许用户进行多项选择,同时具备搜索过滤功能,使得...
总结来说,创建一个jQuery多选下拉菜单涉及到HTML结构的设置、CSS样式的设计、jQuery库的使用以及可能的Ajax交互。通过合理利用现有的工具和库,我们可以构建出功能强大、交互友好的多选下拉菜单,提升用户的使用...
这个"jQuery单选多选按钮样式美化代码.zip"文件提供了对单选按钮和多选按钮的视觉样式改进的解决方案,特别适合那些希望提升网站或应用界面美观度的开发者。 首先,让我们深入了解一下jQuery。jQuery是由John Resig...
5. **优化和扩展**:根据需求,我们可以进一步优化代码,如添加多选筛选、搜索功能或改进用户体验。同时,`assets`文件夹可能包含图片和其他媒体资源,用于美化筛选按钮或列表项。 **四、实际应用** 这个插件适用于...
总之,这款jQuery模拟select下拉框多选和单选插件是网页开发中的一个实用工具,它通过良好的视觉设计和用户体验改进,提高了网页的交互性和专业性。在实际项目中,开发者可以根据需求对其进行配置和扩展,以满足各种...
在改进后的双向选择器中,作者加入了shift多选的功能,让用户在选择列表项时可以更加方便快捷。 知识点3:Jquery Jquery是一个快速、简洁的JavaScript库,它封装了许多常用的JavaScript操作,极大地简化了...
本项目"jquery实现用户信息左右选择特效"是基于jQuery构建的一个交互式用户信息管理功能,它优化了传统的多选列表,提供了一种更加直观和动态的方式来处理用户数据。 首先,我们要理解这个项目的背景。传统的多选...
"下拉列表多选2"可能是指一个特定版本或改进的实现,可能是针对性能、易用性或兼容性的优化。 `MultiDropDown-v2` 这个名称暗示我们可能正在处理一个升级版的多选下拉组件,可能是第二版(v2)的更新。这个组件可能...
本主题聚焦于“织梦多选功能修改”,这是一个关于如何增强织梦列表页筛选功能的技术点,特别是涉及多选筛选选项的优化。下面我们将深入探讨这个主题,解析相关代码实现,并给出可能的改进策略。 1. **织梦列表页...
6. `连接地址.txt`:这可能是一份链接列表,指向获取更多jQuery多选框插件资源、文档或者示例的网址。 要使用这些文件,首先需要在网页中引入jQuery库(如果还没有的话),然后加载jQuery UI(如果使用了其样式)和...
jQuery插件如“Select2”,“Chosen”,“Bootstrap Select”等,提供了丰富的功能和美观的设计,使得`<select>`元素可以有搜索、多选、自定义样式等多种特性。这些插件通常通过JavaScript和CSS来增强原始的HTML元素...
最后,在页面加载完成后,使用jQuery的`$(document).ready`函数来初始化Chosen,这样`<select>`元素就被转换成了可多选、带搜索功能的下拉框。 Chosen库还提供了丰富的配置选项和API,可以自定义其行为,例如设置...
Select2是一款基于jQuery的增强型下拉选择框插件,它极大地改进了原生HTML `<select>` 元素的用户体验和功能。标题中的"select2(jquery)插件下载"指的是这个插件的获取途径,通常通过下载压缩包文件来获取并应用于...
在本文中,我们看到一个具体的例子,作者在原有的Combotree基础上改进了样式,使其更适合多选需求。 在HTML部分,我们注意到引入了EasyUI的相关CSS和JavaScript文件,包括`easyui.css`、`jquery.min.js`和`jquery....
为了改进用户体验,开发者通常会使用jQuery插件,如Chosen、Select2或Multiselect等。这些插件提供了更美观的界面和更友好的交互方式。 以Chosen为例,首先需要在页面中引入jQuery库和Chosen插件的CSS及JS文件。...
开源项目的好处在于开发者可以查看和修改源代码,根据需求进行定制,也可以向社区贡献改进,共同完善项目。 综上所述,"html弹出窗体内涵单选,多选,分页"涉及了HTML基础元素、用户交互设计和前端开发技术。在实际...
- 更新了 `.val()` 方法,以便更好地处理多选表单元素。 - 增强了 `.attr()` 方法对于 SVG 属性的支持。 - **注意事项**: - jQuery 3.2.1 不支持 IE8 及以下版本的浏览器。 - 如果项目中仍然使用了这些旧版本...
相较于早期版本,它可能包含了更多的修复和改进,确保了组件的兼容性和稳定性。 **四、目录结构解析** - **index.html**:示例文件,通常包含了对 jQuery UI 组件的演示和测试,帮助开发者了解如何使用各种组件。 ...