自己写的一个美化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. BOOST 线程完全攻略 - 基础篇

    http://blog.csdn.net/iamnieo/article/details/2908621 2008-09-10 12:48 9202人阅读 评论(3) 收藏 举报 thread多线程l ...

  2. 从零开始学C++之STL(七):剩下5种算法代码分析与使用示例(remove 、rotate 、sort、lower_bound、accumulate)

    一.移除性算法 (remove)  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 ...

  3. ORACLE/MYSQL/DB2等不同数据库取前几条记录

    选取数据库中记录的操作是最基础最频繁的,但往往实际应用中不会这么简单,会在选取记录的时候加上一些条件,比如取前几条记录,下面就总结了如何在ORACLE/MYSQL/DB2等一些热门数据库中执行取前几条 ...

  4. react基于webpack和babel以及es6的项目搭建

    项目demo地址https://github.com/aushion/webpack_reac_config 1.打开命令提示窗口,输入 mkdir react_test cd react_test ...

  5. c++ 指针的简单用法

    对于指针,其实只需要明白几点就可以. 1.指针,是一个数值为地址的变量,这里尤其注意,指针变量的值是地址!就是例如40002这种像门牌号的地址值,其实就是内存中的一个编号. 2.&,该符号的意 ...

  6. jetty 8.1.8 PWC6345: There is an error in invoking javac. A full JDK (not just JRE) is required

    应该是jdk和jre配置问题,建议看看这个博客:http://blog.csdn.net/nba_2011/article/details/7219750里边查看配置方法很清楚

  7. ajax用户名校验demo详解

    //用户名校验的方法 //这个方法使用XMLHTTPRequest对象进行AJAX的异步数据交互 var xmlhttp; function verify(){ //1.使用dom的方式获取文本框中的 ...

  8. jquery 单选框整个选中

    问题:遇到单选框,如图 解决办法:利用jqurey click->checked <!DOCTYPE html> <html lang="en"> & ...

  9. [C++程序设计]有关形参与实参,及返回值说明

    有关形参与实参的说明:(1) 在定义函数时指定的形参,在未出现函数调用 时,它们并不占内存中的存储单元,因此称它们是 形式参数或虚拟参数,表示它们并不是实际存在的数据,只有在发生函数调用时,函数max ...

  10. Mysql MEMORY 引擎

    CREATE TABLE `m` ( `) unsigned NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `ctime` ) NOT NULL, `ltim ...