jquery-div模拟下拉列表框(Select)插件
关键词:Jquery div 模拟下拉列表框 select
最近要用到Select标签,但是数据比较多,使用默认的标签必须要下拉框超过一定高度,滚动条才出现,人为的设定下拉框的高度,并不能够达到想要的效果,尝试了一段时间,放弃了这个想法,决定找一个div模拟下拉框的插件,这样不仅能够达到想要的效果,其展示也会更漂亮。
从网络上找到了一个“jQuery Select(单选) 模拟插件 V1.3.6”,功能也比较强,应用到系统中,出了不
少问题,对这个插件进行了一些修改,但并没有达到理想效果,折腾了不少时间,终究还是决定自己写一个。这个功能较为简单,只是简单的模拟出下拉框。
实现比较简单,就是在页面上添加一个宿主input标签,用于存储数据并占位,之后使用div+ul+li模拟一个层,li模拟出排列的option,并对li的点击添加选中事件并处理数据,同时添加一些展示效果。当列表的数值大于8时,我设定了div的高度为150px,用此限定列表框的整体高度,并出现滚动条,这里的8(对应代码_count > 8)及150px我都写死了,可以通过修改该扩展将这两个值做成可配置的,将会更灵活,不过我从整体效果上看了看,高度150px用起来感觉刚好。代码如下:
$.fn.SimulateSelect = function(data, f) {
var inOb = $(this);
var currentid = $(this).attr("id");
var id = 'divSelect' + currentid;
var width = $(this).width();
$(this).hide();
$(this).parent().append('<div id="a_' + id + '"></div>' + '<div id="b_' + id + '"></div>');
$('#a_' + id).addClass("dropselectbox dropdown").css({
'width': width - 22
}).html('').html($(this).val());
$('#a_' + id).click(function(eb) {
$('#b_' + id).show();
try {
eb.stopPropagation();
}
catch (e) {
event.cancelBubble = true;
}
});
var changeleft = false;
// 这里只针对IE8,其他浏览器无此问题
if ($.browser.msie)
changeleft = ($.browser.version) >= 8;
if (changeleft) {
$('#b_' + id).addClass("ullist").css({
'width': width - 16,
'top': $('#a_' + id).offset().top + 22
}).hide();
} else {
$('#b_' + id).addClass("ullist").css({
'width': width - 16,
'top': $('#a_' + id).offset().top + 22,
'left': $('#a_' + id).offset().left
}).hide();
}
$('<ul style="margin:0;"></ul>').appendTo($('#b_' + id));
var _count = 0;
$.each(data.value, function(o, ov) {
_count++;
$("<li/>").html(ov).attr('v', ov).click(function(eb) {
$(inOb).val($(this).attr('v'));
$('#a_' + id).html('').html($(this).html());
$("#" + currentid).val($(this).html());
$('#b_' + id).hide()
if (f)
f($(this).attr('v'), $(this).html());
try {
eb.stopPropagation();
}
catch (e) {
event.cancelBubble = true;
}
}).hover(function() {
$('#b_' + id).find('li[class=floatred]').removeClass('floatred');
$(this).addClass('floatred');
$('#b_' + id).find('li').removeClass("over");
$(this).addClass("over").addClass("selectedli");
}, function() {
$(this).removeClass('floatred');
$(this).removeClass("over");
}).appendTo($('#b_' + id + ' ul'));
});
// 绑定初始值
if (data.select != "") {
$('#a_' + id).html('').html(data.select);
$("#" + currentid).val(data.select);
}
if (_count >
{
$('#b_' + id).find("ul").css("height", "150px");
}
var liobj = $('#b_' + id).find('li[v=' + inOb.val() + ']');
if (liobj.html()) {
liobj.addClass('floatred');
$('#a_' + id).html(liobj.html());
}
else {
inOb.val('');
}
$(document).click(function() {
$("#b_" + id).hide();
});
};
效果如下图:
使用方法:
1 在页面上声明一个input对象进行占位:
<input id="selFilter" type="text" style="width: 100px;" readonly="readonly" month="1" />
2 在页面载入时执行一下语句:
$(function() {
$("#selFilter").SimulateSelect({value:{1:"2008",2:"2007",3:"2006"},select:''})
});
css,其中还用到了一个小下拉图标,这个随便找一个就行了:
.ullist ul li{text-indent:5px; margin: 0;padding:0; list-style:none; display:block; cursor:default;}
.ul li.over{}
.dropselectbox {border:1px solid #ccc;overflow:hidden; display:inline;float:left; padding-left:4px; background-color:#fff;}
.dropdown {height:21px, font:12px/21px Arial, Helvetica, sans-serif; border:solid 1px #AAA; background:url(../image/arrow.gif) no-repeat right center;}
.dropdown .over{border-color:#369; background-image:url(../image/droparrowover.gif); }
.dropdown .current{ border-color:#003;}
.ullist ul {border:1px solid #aaa; backgruond:#fff; overflow-y :auto}
.ullist ul li{ background:#fff; height:19px; font:400 12px/19px Arial, Helvetica, sans-serif;}
.ullist ul li.over{background:#369; color:#fff;}
.ullist {background-color:#fff; position:absolute; overflow-y:auto; overflow-x: hidden; z-index: 20; margin: 0; padding:0;}
分享到:
相关推荐
div+css打造select下拉菜单,可自己修改相应样式!!!
此为jquery.editable-select插件的使用案例,这是一款非常好用的插件,好用之处:既可下拉框选择也可手动输入,而且手动输入还能对下拉框选项进行过滤,而且还可实现一些相关事件,具体请查看官方文档。
jquery-ui-日期框扩展成时间框 jquery-ui时间框 基于别人的代码进行修改 jquery-ui-1.8.16.custom.css文件末尾加入以下代码 .ui-timepicker-div .ui-widget-header{ margin-bottom: 8px; } .ui-timepicker-div dl{ ...
下拉模糊查询 jQuery-select 下拉模糊查询 jQuery-select 下拉模糊查询 jQuery-select 下拉模糊查询 jQuery-select 下拉模糊查询 jQuery-select 下拉模糊查询 jQuery-select
jQuery+div+css模拟select自定义下拉列表框,简单轻巧实用。
jQuery 插件编写的select三级联动,多级联动,修改方便,扩展方便
jQuery Select 从图中你就可看出,它是一款Select下拉单选框模拟插件,模拟原有select下拉框的功能,不过比原始Select更具表现力,可以随心所欲的对其美化,同时它还支持键盘操作,可通过键盘选择下拉框选项,可...
jquery-simple-combobox, 一个jQuery组合框( selectbox ) 插件 jQuery简单组合插件插件一个 jQuery combobox插件你可以将它用于自动完成( 搜索等) 。用法你可以在 index.html 中找到引用,并在这里查看 fiddles,以...
jQuery下拉列表select美化插件jQselectable jQuery下拉列表select美化插件jQselectable jQuery下拉列表select美化插件jQselectable jQuery下拉列表select美化插件jQselectable
jquery-1.11.1.js 、jquery-1.11.1.min.js 【官方jquery包 js】
jquery input文本框模拟select选择框获取选定 jquery input文本框模拟select选择框获取选定 jquery input文本框模拟select选择框获取选定
这里包含jquery-ui-1.8.16.custom.min.js/jquery-ui-1.8.16.custom.css,我费了好长时间找到的,此东西可以配合jQuery UI开发指南一书使用。
使用jquery做的div下拉框,下拉列表。
类似百度下拉提示 模拟select下拉框 jquery插件 自动提示框 下拉框 本插件依赖于jquery的插件,类似于百度下拉提示框
这是一款效果超赞的jQuery和css3 select下拉列表框美化插件。该下拉列表美化插件没有使用图片,纯css和一点jQurey打造。共有5中不同的select下拉列表框效果。
jQuery div仿select下拉选项菜单美化获取html jQuery div仿select下拉选项菜单美化获取html jQuery div仿select下拉选项菜单美化获取html jQuery div仿select下拉选项菜单美化获取html
jQuery多级下拉菜单支持多级下拉列表菜单代码。
jqweui图片上传插件jquery-weui.uploader.js 实现 多图上传,预览,删除,初始化控件,图片赋值加载,获取图片数据。压缩包包含jquery-weui.uploader.js,weui以及示例demo
* Porting : Jquery barcode plugin * Version : 2.0.1 * * Date : September 05, 2010 * Author : DEMONTE Jean-Baptiste (firejocker) * HOUREZ Jonathan * Contact : jbdemonte @ gmail.com * Managed...
jQuery-File-Upload上传插件