美化select的jquery插件
自己写的一个美化select插件,浏览器自带的实在太丑,还不能用css自定义。
插件主要原理是隐藏原生的select控件,支持select上设置change事件。
脚本
/*
* iSelect
* 自定义select控件
*/
(function ($) {
$.fn.iSelect = function (configs) {
var configs = $.extend({}, $.fn.iSelect.defaults, configs || {});
return this.each(function (index, element) {
var myThis = this;
var $this = $(this); var elId = $this.attr('name');
if (elId == '' || typeof (elId) == 'undefined') {
elId = 's00' + index;
$this.attr('id', elId);
}
var $wrap = $('#iselect-' + elId);
if ($wrap.length <= 0) {
$wrap = $('<span class="iselect" id="iselect-' + elId + '"><div class="old"></div><div class="text"></div><div class="dropdown"><ul></ul></div></span>');
$this.before($wrap);
$this.prependTo($wrap.find('.old'));
}
var $text = $wrap.find('.text');
var $dropdown = $wrap.find('.dropdown');
var width = $this.width();
var allwidth = configs.width;
if (allwidth == 'auto') {
allwidth = width;
}
//$wrap.css({width:allwidth});
$text.css({width:allwidth});
$dropdown.css({width:allwidth + 2});
var $list = $dropdown.find('ul');
var html = '';
var i = 0;
var text = '';
var value = '';
var selected = false;
var style = '';
for (i = 0; i < myThis.options.length; i++) {
text = myThis.options[i].text;
value = myThis.options[i].value;
selected = myThis.options[i].selected;
if (selected) {
style = ' class="selected"';
} else
style = '';
html += '<li data-value="' + value + '"' + style + '><a href="javascript:;">' + text + '</a></li>';
}
$list.html(html);
if (myThis.options.length>0) {
text = myThis.options[myThis.selectedIndex].text;
$text.html(text);
} $dropdown.hide();
$text.click(function (event) {
event.stopPropagation();
$dropdown.show();
});
$(document.body).click(function () {
$dropdown.hide();
});
var $items = $list.find('li');
$items.click(function (event) {
var selectedIndex = $items.index($(this));
myThis.options[selectedIndex].selected = true;
$(myThis).change();
$text.html(myThis.options[myThis.selectedIndex].text);
$dropdown.hide();
});
});
};
$.fn.iSelect.defaults = {width:'auto'};
})(jQuery);
样式
.iselect { position:relative; display:inline-block; zoom:; height:24px; line-height:24px; }
.iselect .old { height:1px; overflow:hidden; }
.iselect .text { height:24px; text-indent:5px; background:#fff url(images/iselect.png) no-repeat right center; border:solid 1px #d5d5d5; cursor:default; }
.iselect .text:hover { border-color:#5999d0; background-image:url(images/iselect_hover.png); }
.iselect .dropdown { position:absolute; left:; top:27px; z-index:; width:100%; height:auto; background:#fff; }
.iselect .dropdown ul { border:solid 1px #d5d5d5; max-height:360px; overflow:auto; }
.iselect .dropdown li { cursor:pointer; }
.iselect .dropdown li a { display:block; padding:0 5px; }
.iselect .dropdown li.selected a { background:#5999d0; color:#eee; }
.iselect .dropdown a:hover { background:#eee; }
调用
$(function(){
$('select').iSelect();
});
当前支持一个参数 width用来设置宽度,如果是动态更改下拉选项,在select上调用一次iSelect 即可
美化select的jquery插件的更多相关文章
- pc端美化select,jquery获取select中的option的text值
代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- html select美化模拟jquery插件select2.js
代码展示:http://www.51xuediannao.com/demo.php 代码说明: select2.js是一个html select美化模拟类jquery插件,但是select2.js又远 ...
- 海量jQuery插件
转自:http://blog.csdn.net/zzq58157383/article/details/6900142 提醒大家在使用的时候注意jQuery包的版本问题,最好是使用相同的版本,因为使用 ...
- 超经典~超全的jQuery插件大全
海量的jQuery插件帖,很经典,不知道什么时候开始流传,很早以前就收藏过,为了工作方便还是发了一份放在日志里面. 其中有些已经无法访问,或许是文件移除,或许是被封锁.大家分享的东西,没什么特别的可说 ...
- jquery插件,美化select标签
最近经常与select打交道,因为ie下的select实在太丑了,css怎么搞都搞不好看,因为程序已经写得差不多了,要再去模拟select改动太大,就想着能否不改动select,同时美化它.借鉴一下这 ...
- 20款美化网站的 jQuery Lightbox 灯箱插件
jQuery Lightbox 灯箱插件可以让你为您的网站和应用程序展示优雅的图像,视频 和其它内容(使用模式窗口).如果你是一个开发人员,你必须拥有 jQuery 灯箱插件集合,因为有一部分的客户会 ...
- jQuery插件:模拟select下拉菜单
没搞那么复杂,工作中,基本够用.. <!doctype html> <html> <head> <meta charset="utf-8" ...
- jquery美化select,自定义下拉框样式
select默认的样式比较丑,有些应用需要美化select,在网上找到一个很好的美化样式效果,本人很喜欢,在这里分享一下. <!DOCTYPE html PUBLIC "-//W3C/ ...
- jQuery插件实现select下拉框左右选择_交换内容(multiselect2side)
效果图: 使用jQuery插件---multiselect2side做法: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...
随机推荐
- maven报错cannot change version of project facet
用Eclipse创建Maven结构的web项目的时候选择了默认的catalog,由于这个catalog比较老,用的servlet还是2.3,而现在最少也是2.5,所以经常会出现问题,在Projecdt ...
- PIL库 (Pillow)
PIL基础 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important ...
- break,continue,return 区别
using System;using System.Collections.Generic;using System.Text; namespace breakcontinue_test{ cl ...
- oracle行号排序问题
1.创建一个student,并且插入数据 ),age int) '); '); '); '); '); commit; 2.直接按照age进行排序显示行号: select * from(select ...
- 12个非常有用的JavaScript小技巧
在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...
- mac下 WebStorm下主题包安装
mac下: 主题包 1.mac下,点击桌面,使用shift+command+G 输入:~/Library/Preferences 前往(mac查找安装目录的方法,因为默认这些文件夹是隐藏的),进入We ...
- 几个makefile小例子
http://www.blogjava.net/canvas/articles/quick_makefile.html http://www.cnblogs.com/azraelly/archive/ ...
- Java中操作时间比较好用的类
项目中经常用到日期的操作,包括日期的格式化.下面是几个比较常用的工具类. import java.text.SimpleDateFormat; import java.util.Date; impor ...
- ini_set()注意要点和解决方法
在php编程中,很多情况下,我们不希望通过修改配置文件(php.ini)来实现相关功能,这样不利于代码的可移植性. 大多数情况下,我们会使用ini_set()来实现配置文件的占时修改.但需要注意的是, ...
- ListView与CheckBox组合实现单选
main.xml配置文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns ...