用jquery实现下拉框的美化

本文介绍了一个基于jQuery的下拉选择框插件oopiuSelect,该插件可以将HTML标准的select元素转换为更加美观和交互丰富的自定义组件。插件通过创建文本框和图标来替代默认的选择框样式,并实现点击展开选项列表的功能。

例子地址:http://download.youkuaiyun.com/detail/cyoubunketu/4131093   Email:cyoubunketu@126.com

/**
 * jQuery ooppiu select Plugin 1.0.1
 *
 * Copyright (c) 2009 - 2012 oopiu
 * Email: cyoubunketu@126.com
 */
 
$.extend({

	oopiuSelectClickFlg:false,
	
	oopiuInit: function($selects) {
		if (!$selects){
			$selects = $('select');
		}
		
		$selects.each(function(i) {
			$this = $(this);
			if (!this.id){
				$this.attr("id","oopiu_auto_create_select_id"+i);
			}
			id = this.id;
			oopiu_val_w = $this.width();
			oopiu_val_p = $this.offset();
			$this.hide();
			oopiu_val_t = $this.oopiuCreateText(oopiu_val_w,id);
			oopiu_val_img = $this.oopiuCreateTre(oopiu_val_w,oopiu_val_p,id);
			$this.after(oopiu_val_t);
			$("body").append(oopiu_val_img);
			
			oopiu_val_dp = $(oopiu_val_t).offset();
			oopiu_val_divLeft = oopiu_val_dp.left;
			oopiu_val_divTop = oopiu_val_dp.top + $(oopiu_val_t).height();
			oopiu_val_param = {left:oopiu_val_divLeft,top:oopiu_val_divTop,width:oopiu_val_w,selId:this.id};
			var oopiu_val_divNode = $this.oopiuCreateDiv(oopiu_val_param);
			
			$("body").append(oopiu_val_divNode);
			
		});
		$(document).click(function(){
			if ($.oopiuSelectClickFlg == false){
				$(".oopiu_select_div:visible").hide();
			}
		});
	}
});

$.fn.extend({
	
	oopiuSelectClick:function(id){
		
		$(this).click(function(){
			if ("none" == $("#" + id + "_div").css("display")){
				$(".oopiu_select_div:visible").hide();
				$.oopiuSelectClickFlg = true;
				window.setTimeout(function(){$.oopiuSelectClickFlg = false;},300)
				$("#"+id + "_div").slideDown("fast",$(this).oopiuFindRow(id));
			}else{
				$.oopiuSelectClickFlg = false;
				$("#"+id + "_div").hide();
			}
		});
	},

	
	oopiuCreateText:function(w,id){
		var oopiu_val_t = document.createElement("input");
		$(oopiu_val_t).attr("id",id+"_text");
		$(oopiu_val_t).attr("selId",id);
		$(oopiu_val_t).attr("type","text");
		$(oopiu_val_t).attr("value",$("#"+id+" option:selected").text());
		$(oopiu_val_t).attr("readonly","true");
		$(oopiu_val_t).css("width",w+15);
		$(oopiu_val_t).css("marginTop",0); 
		$(oopiu_val_t).css("border","1px solid lightslategray");
		$(oopiu_val_t).css("-webkit-border-radius","5px");
		$(oopiu_val_t).css("-moz-border-radius","5px");
		$(oopiu_val_t).css("cursor","pointer");
		$(oopiu_val_t).css("padding-right","15px");

		$(oopiu_val_t).hover(
			function(){
				$(this).css("border","1px solid lightsteelblue");
			},
			function(){
				$(this).css("border","1px solid lightslategray");
			}
		);
		$(oopiu_val_t).oopiuSelectClick(id);
		return oopiu_val_t;
	},
	
	oopiuCreateTre:function(width,pos,id){
		var oopiu_val_i = document.createElement("div");
		$(oopiu_val_i).html('<em style="width:5px;"></em><em style="margin:0 1px;width:3px;"></em><em style="margin:0 2px;width:1px;"></em>');
		$(oopiu_val_i).css({"position":"absolute","left":pos.left+width+6,"top":pos.top+8,"width":"5px","height":"5px","display":"block","overflow":"hidden"});
		$(oopiu_val_i).css("cursor","pointer");
		$(oopiu_val_i).find("em").each(function(){
			$(this).css({"height":"1px","overflow":"hidden","display":"block","background-color":"#666666"});
		});
		$(oopiu_val_i).oopiuSelectClick(id);
		return oopiu_val_i;
	},
	
	oopiuCreateDiv:function(param){
		var left = param.left;
		var top = param.top;
		var width = param.width;
		var selId = param.selId;
		
		var d = document.createElement('div');
		$(d).css("position","absolute");
		$(d).css("width",width + 13);
		$(d).css("border","1px solid gray");
		$(d).css("border-top-style","none");
		$(d).css("font-size","12px");
		$(d).css("backgroundColor","#FFF");
		$(d).addClass("oopiu_select_div");
		$(d).css("left",left);
		$(d).css("top",top + 4);
		if ($("#"+selId+" option").length > 11){
			$(d).css("overflow","auto");
			$(d).css("height",20 * 11);
		}
		$("#"+selId+" option").each(function(i){
				value = this.value;
				text = this.text;
				a = $(this).oopiuCreateOptions({value:value,text:text,id:selId,width:width,row:i});
				$(d).append(a);					
		});

		$(d).hide();
		$(d).attr("id",selId+"_div");
		return d;
	},
	
	oopiuCreateOptions:function(pam){
		var id = pam.id;
					
		var tbl = $("<table></table>");
		var trNode = $("<tr></tr>");
		var td = $("<td></td>");
		
		$(tbl).css("width","100%");
		$(tbl).css("cursor","hand");
		$(tbl).css("table-layout","fixed");
		$(tbl).css("font-size","12px");
		
		$(tbl).attr("cellSpacing","0");
		$(tbl).hover(function(){$(td).css("background","gainsboro")},function(){$(td).css("background","")});
		
		$(td).attr("value",pam.value);
		$(td).attr("innerHTML",pam.text);
		$(td).css("padding","2");
		$(td).css("height","20");
		$(td).css("overflow","hidden");
		if (pam.text.length * 12 > pam.width){
			$(td).attr("title",pam.text);
		}					
		$(td).css("white-space","nowrap");
		$(td).click(function(){
			$("#"+id+"_div").hide();
			$("#"+id)[0].selectedIndex = pam.row;
			$("#"+id+"_text").attr("value",pam.text);
			$("#"+id).change();
		});
		
		td.appendTo(trNode);
		trNode.appendTo(tbl);

		return tbl;
	},
	
	oopiuFindRow:function(id){
		var showText = $("#"+id+"_text").val();
		$("#"+id+"_div > table").each(function(){
			txt = $(this).find("td").text();
			$(this).css("background","");
			if (showText == txt){
				$(this).css("background","whitesmoke");
			}
		});
	}
}); 
		
			
	


考虑可再生能源出力不确定性的商业园区用户需求响应策略(Matlab代码实现)内容概要:本文围绕“考虑可再生能源出力不确定性的商业园区用户需求响应策略”展开,结合Matlab代码实现,研究在可再生能源(如风电、光伏)出力具有不确定性的背景下,商业园区如何制定有效的需求响应策略以优化能源调度和提升系统经济性。文中可能涉及不确定性建模(如场景生成与缩减)、优化模型构建(如随机规划、鲁棒优化)以及需求响应机制设计(如价格型、激励型),并通过Matlab仿真验证所提策略的有效性。此外,文档还列举了大量相关的电力系统、综合能源系统优化调度案例与代码资源,涵盖微电网调度、储能配置、负荷预测等多个方向,形成一个完整的科研支持体系。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及从事能源系统规划与运行的工程技术人员。; 使用场景及目标:①学习如何建模可再生能源的不确定性并应用于需求响应优化;②掌握使用Matlab进行商业园区能源系统仿真与优化调度的方法;③复现论文结果或开展相关课题研究,提升科研效率与创新能力。; 阅读建议:建议结合文中提供的Matlab代码实例,逐步理解模型构建与求解过程,重点关注不确定性处理方法与需求响应机制的设计逻辑,同时可参考文档中列出的其他资源进行扩展学习与交叉验证。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值