Jquery实现div模拟Select控件
来源:js-blog.cn 发布时间:2008-12-01 15:47:00
标签:jquery,select,模拟,框架
大家已经从实际使用中了解了jquery这个javascript框架的强大,其实jquery更加强大的是可扩展。你可以编写自己的基于jquery的插件,使你的代码功能更加简洁,也使程序员们更加轻松。。。
大家都知道在html中div和table是无法覆盖select和flash这样的window级别的元素,可是页面中我们不可能不使用浮动的div层,这样就导致用户体验不够好,一般情况下,我们会在显示浮动div层时把select和flash控件隐藏,这样暂时解决了浮动层的可观性,可是在隐藏了select和flash势必会让浏览者感觉到页面内容的变化。那我们是否可以使用其他控件来代替他们呢?
下面我们就来看一个小小的div模拟select控件的应用。。。
<script language="javascript" type="text/javascript">
var Options1 = [["00点","00"],["01点","01"],["02点","02"],["03点","03"],["04点","04"],["05点","05"],["06点","06"],["07点","07"],
["08点","08"],["09点","09"],["10点","10"],["11点","11"],["12点","12"],["13点","13"],["14点","14"],["15点","15"],
["16点","16"],["17点","17"],["18点","18"],["19点","19"],["20点","20"],["21点","21"],["22点","22"],["23点","23"]];
var Options2 = [["00分","00"],["15分","15"],["30分","30"],["45分","45"]];
<!--定义select列表项option-->
$.dmSelect = function(name,value,data){
$("#" + name).attr("readonly","readonly"); //设置控件只读
var top = $("#" + name).offset().top; //获取控件top、left位置和width、height
var left = $("#" + name).offset().left;
var height = $("#" + name).height();
var width = $("#" + name).width()+3;
var option_open = false; //标记是否打开下拉option
function __dropheight(l){var h;if(l>10 || l<1){h = 10 * 20;}else{h = l * 20; h += 2;}return h;} //计算下拉option显示高度
var div_html = "<div id='_li_"+name+"' style='position:absolute;background-color:#FFFFFF;top:"+(top+height+5)+"px;left:"+left+"px;width:"+((width<30)?30:width)+"px;height:"+__dropheight(data.length)+"px;border:1px #666666 solid;overflow-x:hidden;overflow-y:auto;display:none;z-index:99999;'>";
//for循环填充option
for(var i = 0;i < data.length; i++){div_html += "<div style='text-align:left;padding-left:5px;' value='" + data[i][1] + "'>" + data[i][0] + "</div>";}
div_html += "</div>";
$("#" + name).after(div_html); //添加到input控件后面
function __open_option(){$("div[id^='_li_']").hide();$("#_li_" + name).show();option_open=true;} //显示下拉option
function __hide_option(){$("#_li_" + name).hide();option_open=false;$(document).unbind("click",__hide_option);} //隐藏下拉option
$("#" + name).click(function(event){if(option_open){__hide_option();}else{__open_option();$(document).bind("click",__hide_option)}event.stopPropagation();});
$("#_li_" + name + " > div").hover(function(){$(this).css({"background-color":"#CCCCCC"});},function(){$(this).css({"background-color":"#FFFFFF"});})
.click(function(){$("#" + name).val($(this).html());$("#" + value).val($(this).attr("value"));});
};
<!--实现div模拟select插件代码-->
$(document).ready(function(){
$.dmSelect("time_hour","hf_time_hour",Options1);
$.dmSelect("time_minute","hf_time_minute",Options2);
});
<!--调用方法-->
</script>
然后在页面body中添加如下input控件
<input type="text" id="time_hour" class="dropdown-select" />
<input type="hidden" id="hf_time_hour" />
<input type="text" id="time_minute" class="dropdown-select" />
<input type="hidden" id="hf_time_minute" />
后面的hidden隐藏控件只要是用来记录select选择的value值(value值不等同与text显示的值)
这个基于jquery的div模拟select下拉列表还有不足的地方,以后有时间再改进改进。
0
投稿
猜你喜欢
- 本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件的名称,从另一个文件夹中找到与这一文件夹中文件同名
- 昨天发现程序中数据分析的结果不对,重新进行分析后,原数据仍在,有值的字段被累计。心说,不对啊,是重新生成记录后才分析的啊。难道忘了DELET
- 本文实例讲述了Python闭包实现计数器的方法。分享给大家供大家参考。具体实现方法如下:先来看看专业的解释:闭包(Closure)是词法闭包
- 1.冒泡排序,相邻位置比较大小,将比较大的(或小的)交换位置def maopao(a): for i in ran
- 一.什么是事务在MySQL中的事务(Transaction)是由存储引擎实现的,在MySQL中,只有InnoDB存储引擎才支持事务。事务处理
- 如何一行输入多个数,并存入列表在python里,如果你仅使用input()的话是输入一行的内容并将该行的内容以字符串的形式存到变量中,但如果
- PHP5.4后新增traits实现代码复用机制,Trait和类相似,但不能被实例化,无需继承,只需要在类中使用关键词use引入即可,可引入多
- 实例1、取得MYSQL版本# -*- coding: UTF-8 -*-#安装MYSQL DB for pythonimport MySQL
- array_unique() 定义和用法 array_unique() 函数移除数组中的重复的值,并返回结果数组。 当几个数组元素的值相等时
- tensorflow中有很多在维度上的操作,本例以常用的tf.reduce_sum进行说明。官方给的apireduce_sum( input
- 1. views.py定义views视图函数,将数据存入字典。并用压缩为json格式,dumps,并return。import jsonde
- 1、其中再语义分割比较常用的上采样:其实现方法为:def upconv2x2(in_channels, out_channels, mode
- 往列表头部和尾部添加元素往头部添加元素list.insert(index,new_element)@@@index为新元素的插入位置,当in
- 概述Anaconda安装后,会在开始菜单中添加菜单项,但是这些菜单项中,没有Jupyter Lab快捷方式。在实现前应该明确两点:开始菜单是
- 这本来是翻译Estelle Weyl的《15 JavaScript Gotchas》,里面介绍的都是在JavaScript编程实践中平时容易
- 矛盾出来了,像我们这些小作坊,基本都是设计布局一人搞定。甚至还有加后台程序的。假设设计的时候考虑布局了,我们都有这个能力进行调整。但像大公司
- 我就废话不多说了,大家还是直接看代码吧!import requests, jsonr = requests.get('http://
- 图的实现所谓图就是节点及其连接关系的集合。所以可以通过一个一维数组表示节点,外加一个二维数组表示节点之间的关系。//图的矩阵实现typede
- 任务描述本关任务:利用 PyEcharts 绘制一个基本的漏斗图。相关知识为了完成本关任务,你需要掌握:1. Python 的基本语法2.
- 概述最近买了台服务器,准备搭建个人博客,来持续更新自己的博客,环境服务器操作系统:CentOS 7.0博客部署服务器:Apache后台语言: