自己写的一个美化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插件的更多相关文章

  1. pc端美化select,jquery获取select中的option的text值

      代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  2. html select美化模拟jquery插件select2.js

    代码展示:http://www.51xuediannao.com/demo.php 代码说明: select2.js是一个html select美化模拟类jquery插件,但是select2.js又远 ...

  3. 海量jQuery插件

    转自:http://blog.csdn.net/zzq58157383/article/details/6900142 提醒大家在使用的时候注意jQuery包的版本问题,最好是使用相同的版本,因为使用 ...

  4. 超经典~超全的jQuery插件大全

    海量的jQuery插件帖,很经典,不知道什么时候开始流传,很早以前就收藏过,为了工作方便还是发了一份放在日志里面. 其中有些已经无法访问,或许是文件移除,或许是被封锁.大家分享的东西,没什么特别的可说 ...

  5. jquery插件,美化select标签

    最近经常与select打交道,因为ie下的select实在太丑了,css怎么搞都搞不好看,因为程序已经写得差不多了,要再去模拟select改动太大,就想着能否不改动select,同时美化它.借鉴一下这 ...

  6. 20款美化网站的 jQuery Lightbox 灯箱插件

    jQuery Lightbox 灯箱插件可以让你为您的网站和应用程序展示优雅的图像,视频 和其它内容(使用模式窗口).如果你是一个开发人员,你必须拥有 jQuery 灯箱插件集合,因为有一部分的客户会 ...

  7. jQuery插件:模拟select下拉菜单

    没搞那么复杂,工作中,基本够用.. <!doctype html> <html> <head> <meta charset="utf-8" ...

  8. jquery美化select,自定义下拉框样式

    select默认的样式比较丑,有些应用需要美化select,在网上找到一个很好的美化样式效果,本人很喜欢,在这里分享一下. <!DOCTYPE html PUBLIC "-//W3C/ ...

  9. jQuery插件实现select下拉框左右选择_交换内容(multiselect2side)

    效果图: 使用jQuery插件---multiselect2side做法: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...

随机推荐

  1. Eclipse上改动Jython代码的Comment颜色

    1.问题起因 依据上一篇文章<MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)>搭配好Eclipse上面的MonkeyRu ...

  2. MFC读写配置文件

    void CFileTextDoc::OnIniread() { // TODO: Add your command handler code here CString strStudName;   ...

  3. 解决使用Touch ID API在回调时界面“长时间卡住”的问题

    Touch ID是iOS8上新公开的API,关于详细介绍和用法可以看CocoaChina的这两篇文章:上 和 下,在此篇文章中不再赘述. 我在app中需要的效果是如果touch id验证通过,则页面p ...

  4. 前端--关于javascript基础

    首先javascript不是浏览器的附属品,只能说它大多数的运行环境是在浏览器中的,但又不仅仅局限于浏览器中.它是一门真正的程序设计语言,在这方面它和java.c.c++.c#是等同的,只不过它不直接 ...

  5. 不同浏览器对URL最大长度的限制(转)

    1.今天碰到一个bug,window.open后面的页面,接收参数不全,导致后台报错.实验了一下.发现是使用get方法请求服务器时,URL过长所致 微软官方的说明: http://support.mi ...

  6. SQL Server -SET ANSI_NULLS

    当ANSI_NULLS 为ON时,遵循SQL92的标准,只能使用IS NULL 来判断值是否为NULL, 而不能使用=或<>来与NULL做比较,任何值包括NULL值与NULL值做=或< ...

  7. VB短信猫开发包,支持超长短信

    一.短信猫开发包(长短信/异步调用)说明:   短信猫开发包以OCX控件的形式提供,支持Windows平台下常用的开发工具:如VB.VB.net.VC++.Power Builder.C#.DELPH ...

  8. iOS 开发者证书总结

    iOS 证书分两种类型. 第一种为$99美元的,这种账号有个人和公司的区别,公司账号能创建多个子账号,但个人的不能.这种账号可以用来上传app store 第二种为¥299美元的,这种账号只能用于企业 ...

  9. 0128——手势Gesture

    UIGestureRecognizer: 1.locationinView 获取手势在某个视图里面的坐标位置 2.delegate监听手势的行为 3.state状态 开始:UIGestureRecog ...

  10. C#中Dispose、析构函数、close的区别

    一.Close与Dispose这两种方法的区别 调用完了对象的Close方法后,此对象有可能被重新进行使用:而Dispose方法来说,此对象所占有的资源需要被标记为无用了,也就是此对象要被销毁,不能再 ...