`
gashor
  • 浏览: 2231 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

写了个jquery select 插件

阅读更多
select在IE6下显示时存在问题,写了个jquery插件,隐藏原select,用js重新构建UI,对新UI的操作会映射到原select,支持默认选中,自适应宽和change事件

效果图


example.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>example</title>
<script type="text/javascript" src="js/jquery.js"></script>
<link rel="stylesheet" type="text/css" href="js/selectBox/selectBox.css"/>
<script type="text/javascript" src="js/selectBox/selectBox.js"></script>
<script>
$().ready(function(){	
	$("#room").change(function(){alert("changed");});
	$("select").selectBox();    
});
</script>
<style>
body{font-size:14px}
</style>
</head>
<body>
    <select name="room" id="room">
        <option value="">请选择</option>
        <option value="0">0</option>
        <option value="1">1</option>
        <option value="2" selected>2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
        <option value="6">6</option>
        <option value="7">7</option>
        <option value="8">8</option>
        <option value="9">9</option>
    </select>
    <label>A</label>


    <select name="hall">
        <option value="">请选择</option>
        <option value="0">0</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">5</option>
    </select>
    <label>B</label>
    

    <select name="toilet">
        <option value="">请选择</option>
        <option value="0">0</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
        <option value="5">长字符串长字符串</option>
    </select>
    <label>C</label> 
</body>
</html>


selectBox.js
;(function($) {
    $.fn.extend({
        "selectBox":function(value){
            //=
	        var $this=this;
	        var jQuerySelectBoxCount=1;
	        var hideDragDown=function(){
	        	   $(".jQuerySelectBox .options").css("display","none")
	        	};
	        
	        $this.each(function(){
	            jQuerySelectBoxCount++;
	            var d=new Date();
	            var id="jQuerySelectBox"+d.getSeconds()+"_"+d.getMilliseconds()+"_"+jQuerySelectBoxCount;
	            var jQuerySelectBox=$("#"+id);
	            var original=$(this);
	            original.css("display","none");
	            var e="<div class='jQuerySelectBox' id='"+id+"'></div>";
	            $(e).insertAfter(original); 
	            var current=$("<div class='current' index='0'>&nbsp;</div>").appendTo("#"+id);
	            var opts=$("<div class='options'></div>").appendTo("#"+id);
	            var down=$("<div class='down'></div>").appendTo("#"+id);
	            
	            var dragDown=function(){//drag down the options
		            if($("#"+id+" .options").css("display")!="block"){
		                hideDragDown();
		                $("#"+id+" .options").css({
		                    display : "block",
		                    top : $("#"+id).offset().top+$("#"+id).height(),
		                    left : $("#"+id).offset().left,
		                    width : $("#"+id).width()
			            });
		                $("#"+id+" .options .option[index='"+current.attr("index")+"']").addClass("selected");
		            }else{
		            	hideDragDown();
		            }
	            };
	            
	            $(down).click(dragDown);
	            $(current).click(dragDown);
	            
	            var options=original.children("option");
	            var o;
	            for(var i=0;i<options.length;i++){
	                o=original.find("option[index='"+i+"']");
	                var option="<div class='option' val='"+o.attr("value")+"' index='"+i+"'>";
	                option+=o.text();
	                option+="</div>";
	                var opt=$(option).appendTo(opts);
	                
		            if(o.attr('selected')==true){//selected option
		                opt.addClass("selected");
		                $(current).html(o.text());
		                $(current).attr("index",i);
		            }
		            
		            opt.click(function(){
		                current.html($(this).text());
		                if(current.attr("index")!=$(this).attr("index")){//if change
		                  current.attr("index",$(this).attr("index"));
		                  $(original).change();//invoke orignal select onchange 
		                }
		                original.find("option[index='"+$(this).attr("index")+"']").attr("selected",true);
		                $(this).addClass("selected");
		                hideDragDown();
		            });
		            
		            opt.mouseover(function(){
		                $(".jQuerySelectBox .options .option").removeClass("selected");
		                  $(this).addClass("selected");
		            });
		            
		            opt.mouseout(function(){
		            	$(this).removeClass("selected");
		            });
	            }
	            $(current).width(opts.width());
	            $("#"+id).width(opts.width()+down.width()+2);
	        });
            //=
        }
    });
})(jQuery);

  • 大小: 8.8 KB
0
0
分享到:
评论

相关推荐

    select2(jquery)插件下载

    标题中的"select2(jquery)插件下载"指的是这个插件的获取途径,通常通过下载压缩包文件来获取并应用于项目中。 **核心特性** 1. **搜索功能**: 描述中的"根据输入内容自动过滤select选项"是Select2的核心功能之一...

    jquery select插件带搜索框的下拉选择框代码

    在这个案例中,我们使用的是jQuery的select插件,具体来说是"jquery.searchableSelect",它为标准的HTML `&lt;select&gt;` 元素添加了搜索功能。 要使用此插件,您需要引入以下文件: 1. `jquery-1.11.1.min.js`:这是...

    jquery 超级select插件 v4.0版本

    jQuery超级Select插件v4.0版本是一个强大且灵活的工具,它为Web开发者提供了丰富的功能和定制选项,帮助提升Select元素的用户体验。通过深入理解和合理运用,开发者可以构建出更加便捷、高效的表单交互。无论是在...

    jquery select插件.zip

    “jQuery Select插件”是一个专门为jQuery设计的组件,它的主要功能是模拟一个具有统一界面风格的下拉选择框。通过使用这个插件,开发者可以轻松地将原有的HTML `&lt;select&gt;` 元素转换为更美观、更符合现代网页设计...

    jquery select2组件

    `jQuery Select2`是一款强大的、高度可定制的下拉选择框插件,它在原生HTML `&lt;select&gt;` 元素的基础上提供了丰富的功能和优秀的用户体验。这款组件广泛应用于网页开发中,使得传统的单选或多选下拉菜单变得更加美观且...

    jquery select美化插件

    在“jquery select美化插件”这个主题中,我们主要关注的是如何利用jQuery扩展原生的`&lt;select&gt;`元素,使其外观和交互更加友好。 描述中提到的“附带jquery1.5”,意味着这个插件依赖于jQuery 1.5版本。尽管这个版本...

    移动设备 select jquery插件

    "移动设备 Select jQuery 插件"就是为了解决这个问题而设计的,它提供了高度可定制且具有良好触控体验的选择器组件,适用于手机端应用。 此插件基于jQuery框架,意味着它可以轻松地与现有的jQuery代码集成,提供了...

    jquery select 多种下拉日期选择插件

    这个标题暗示了我们正在讨论一个基于jQuery的插件,它的功能是为HTML的select元素添加多样的日期选择选项。通常,这种插件会扩展input类型的元素,使得用户可以通过下拉菜单或日历视图快速选取日期,而不必手动输入...

    Jquery select 插件 chosen

    Chosen插件可以通过简单的jQuery选择器和`.chosen()`方法来应用到select元素上: ```javascript $("#mySelect").chosen(); ``` 2. 多选模式 对于`&lt;select multiple&gt;`,Chosen会自动开启多选模式,用户可以按住...

    jQuery下拉列表select美化插件jQselectable

    jQuery下拉列表select美化插件jQselectable jQuery下拉列表select美化插件jQselectable jQuery下拉列表select美化插件jQselectable jQuery下拉列表select美化插件jQselectable

    jquery 封装select实现select自定义样式插件jquery.easydropdown.min.js

    `jquery.easydropdown.min.js`是一个轻量级的jQuery插件,它的主要功能是将传统的Select元素转换为具有自定义样式的下拉菜单。这个插件通过JavaScript和CSS实现了高度可定制的外观和行为,同时保持了原生Select的...

    JQuery插件select2

    总之,jQuery插件Select2是前端开发中不可或缺的工具之一,它极大地提高了用户选择交互的质量,使得原本单调的`&lt;select&gt;`元素焕发新生。通过学习和掌握Select2的使用,开发者可以为用户提供更加高效、美观的界面。

    jQuery下拉查询筛选插件Combo Select.zip

    总的来说,jQuery的Combo Select插件结合HTML5技术,为网页开发提供了强大的下拉查询筛选功能。它不仅提高了用户体验,也为开发者提供了灵活性和便利性,是构建交互式Web应用的理想工具。通过深入理解并实践这些知识...

    jQuery下拉查询筛选插件Combo Select

    **jQuery下拉查询筛选插件Combo Select** 在Web开发中,为了提高用户体验,经常会使用到下拉选择框,特别是当选项列表很长时。jQuery库提供了一种强大的方式来增强原生HTML元素的功能,其中就包括了`Combo Select`...

    jQuery-ComboSelect插件

    1. 在页面中引入jQuery库和jQuery-ComboSelect插件的JavaScript及CSS文件。 2. 初始化插件,指定要增强的下拉选择框元素,并设置相应的配置项,如是否开启多选、是否显示搜索框等。 3. 可选地,通过监听插件提供的...

    jquery.editable-select插件使用案例

    此为jquery.editable-select插件的使用案例,这是一款非常好用的插件,好用之处:既可下拉框选择也可手动输入,而且手动输入还能对下拉框选项进行过滤,而且还可实现一些相关事件,具体请查看官方文档。

    jQuery Select(单选) 模拟插件 V1.3.6

    这个插件的实现原理主要是通过jQuery对原生`&lt;select&gt;`元素进行包装,使用HTML和CSS构建一个新的可视元素来模拟选择器的外观,再通过JavaScript处理用户交互,如点击、滑动等,实时同步`&lt;select&gt;`元素的状态,确保...

    jquery带有图片的select插件

    对于标题提到的"jquery带有图片的select插件",这是一种创新的方式,用于增强传统HTML `&lt;select&gt;` 元素的功能,使其不仅能够展示文本选项,还能展示与选项相关的图片。这样的插件可以提高用户界面的视觉吸引力和交互...

    jQuery Select下拉框分类菜单多选插件

    总结来说,"jQuery Select下拉框分类菜单多选插件"是一个强大的工具,它通过jQuery的灵活性和功能,解决了传统HTML选择器在处理复杂选择需求时的局限性。通过分类、多选和搜索等功能,它提升了用户在网页上的操作...

Global site tag (gtag.js) - Google Analytics